Curried ve uncurried jenerik fonksiyonları arasındaki tip denetimi farkı karıştı biraz değilim:Genel tip birleştirme: birden çok parametre (T, T) ve çoklu parametre listeleri (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
Benim sezgi hem x(1, "one")
ve y(1)("one")
tip hataları vermelidir olmasıydı, ama yanılmışım:
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")
^
ilk başta oluyor örtülü döküm çeşit olduğunu düşündüm, ama bu durumda olması görünmüyordu:
scala> x(1 :Int, "one" :String)
res73: Boolean = false
Peki neler oluyor? Sezgim ne olmalı?
Uzun zaman önce bunun bir kopyasını gördüm. Ayrıca bu [neredeyse] kesin durumun SLS'de belgelendiğine inanıyorum. –
İşte başlıyoruz. Başlığı SLS :) –