私は型チェックカリーとuncurried一般的な機能間の違いで混乱ビットだ:私の直感はx(1, "one")
とy(1)("one")
両方が型エラーを与えるべきであるということでしたが、私が間違っていた汎用型統合:複数パラメータ(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
:
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で議論されている重要な用語 "multiple parameters lists"でタイトルを更新しました:) –