2016-12-08 2 views
0

Juliaがバージョン0.4になったときに書き留めたコードがありますが、現在はバージョン0.5.0です。Julia:文字列を比較するときに奇妙なエラーが発生しました:「メソッドが一致しません==(:: String、:: String)」?

しかし、古いコードを実行しようとすると、次のエラー:

ERROR: LoadError: MethodError: no method matching ==(::String, ::String) 
you may have intended to import Base.== 

どちらかというとちょっと変わったようです。

if fname == "run" 

fname = convert(String, params[1]) 

params = split(readline()[1:end - 1]) 
+0

再現可能な例を示すコードをいくつか作成できますか(つまり、誰でもエラーを再現できるように) –

答えて

0

あなたは私のために細かな作品を供給少しコード:

julia> params = split(readline()[1:end - 1]) 
run this thing 
3-element Array{SubString{String},1}: 
"run" 
"this" 
"thing" 

julia> fname = convert(String, params[1]) 
"run" 

julia> if fname == "run" 
      println("success") 
     else 
      println("failure") 
     end 
success 

エラーは以下の行で発生します問題は他の場所にある可能性があります。

0

この問題は、==機能のカスタム定義であることが判明しました。 それの定義が始まったとして、それは、それを破った理由を私は知りませんが:その機能を削除し、問題を修正移動型は不変作り、関係なく、

function ==(a::Move, b::Move) 

+0

あなたが報告したエラーメッセージは、何が起こったかを示しています。この関数をオーバーロードする前に、Import Base。==を行う必要があります。 –

+0

@ DavidP.Sandersありがとうございました。それは理にかなっていますが、Juliaがなぜそれをインポートする前に==を使うことができるのかわかりませんが、これはデフォルトではありません==私はBaseからインポートしますか? – Kytuzian

+1

'=='を使うと、Juliaは '=='が 'Base === 'を参照することを知っています。しかし、 '' Base = = ''を使う前に*自分自身で、完全に独立した '=='関数を定義することもできます。 –

関連する問題