2016-12-08 3 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 = == '를 사용하기 전에 * 독립적 인'=='함수를 정의 할 수 있습니다. –