Julia:比较字符串时出现奇怪的错误:“没有方法匹配==(:: String,:: String)”?

时间:2016-12-08 17:13:06

标签: string julia string-comparison

我有一些代码,当Julia版本为0.4时我写回来,现在我的版本为0.5.0

但是,当我尝试运行旧代码(修复其他一些问题后)时,现在我收到以下错误:

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])

2 个答案:

答案 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

问题可能在其他地方。

答案 1 :(得分:0)

原来问题是==函数的自定义定义。 虽然我不知道为什么它打破了它,因为它的定义始于:

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

无论如何,删除该函数并使Move类型不可变会解决问题。