나는 simplyscala.com REPL에서 놀고 있었고 객체 메소드에 대한 참조를 얻으려고 시도했습니다. 그것은 Strings와 함께 작동하지만 Integeres와는 기대하지 않았고 조금 혼란 스럽습니다. 그래서 도움을 받으실 수 있습니다. 예상대로scala에서 오버로드 된 메소드에 대한 참조
이 ...
"abc".+ _
res0: (Any) => java.lang.String =
는 ... 작동합니다. =
기호 (아마도 단축 된 형식) 뒤에 함수 본문을 표시하면 좋겠지 만, 예상대로 (공백) 메서드를 호출하는 대신 메서드 참조를 제공합니다.
그러나이 ...
42.+ _
error: missing parameter type for expanded function ((x$1) => 42.0.+(x$1))
42.+ _
^
은 ... 나에게 이상한 오류를 제공합니다. 여기 _
은 정확히 어떻게 작동합니까? 나는 또한 더 명시 Integer
을 만들기 위해 괄호를 사용하고 해석 필요가 없으므로 그것을 시도한 floating
:
(42).+ _
error: ambiguous reference to overloaded definition,
both method + in class Int of type (x$1: Char)Int
and method + in class Int of type (x$1: Short)Int
match expected type ?
(42).+ _
^
그것은 비록 나에게 또 다른 예기치 않은 오류가 있습니다,하지만 난 컴파일러가 알지 못하는 것을 이해 오버로드의 어떤 내가 원하는 방법은에 대한 참조가 있습니다.
내 질문은 : 내 코드 예제에서 오류가 무엇을 말해 줍니까? 그리고 컴파일러가 내 코드 예제에서 메서드 중 하나를 선택하게하려면 어떻게해야합니까?
감사합니다.