I 카레와 uncurried 일반적인 기능과 유형 검사의 차이에 의해 혼란 조금 해요 :일반 유형 통일 : 다중 매개 변수 (T, T) 대 다중 매개 변수 목록 (T) (T)?
scala> def x[T](a: T, b: T) = (a == b)
x: [T](a: T, b: T)Boolean
scala> def y[T](a: T)(b: T) = (a == b)
y: [T](a: T)(b: T)Boolean
내 직감이 모두 x(1, "one")
및 y(1)("one")
유형의 오류를 제공해야한다고했지만, 내가 잘못했다 :
scala> x(1, "one")
res71: Boolean = false
scala> y(1)("one")
<console>:9: error: type mismatch;
found : java.lang.String("one")
required: Int
y(1)("one")
^
은 처음에는 계속 암시 적 캐스팅의 일종이라고 생각하지만, 그 경우 될 것 같지 않았다
scala> x(1 :Int, "one" :String)
res73: Boolean = false
무슨 일 이니? 내 직감은 어떻게해야합니까?
오래 전이 복제본을 보았습니다. 나는 또한이 [거의] 정확한 사례가 SLS에 문서화되어 있다고 믿습니다. –
우리가 간다. 제목을 SLS에서 논의되는 "다중 매개 변수 목록"이라는 중요한 용어로 업데이트했습니다. –