說我定義類型推斷令人驚訝的行爲
class X[K, T](create: K => T) {
}
,然後我定義下面的類執行以下操作:
class A {
val cb = new X[Int, B](i => new B(i)) // infers type fine
val cc = new X[Int, C](i => new C(0, i)) // cannot infer type and requires parameter type
class B(i: Int) {}
class C(i1: Int, i2: Int) {}
}
我很奇怪,爲什麼編譯器不能在創建推斷出類型爲我CC?
感謝 德
你該怎麼辦'新X [詮釋,B]'當給定函數返回一個'新C'和'C'不一個'B'?它不應該是'new X [Int,C](...)'? – gourlaysama
對不起,我的一個錯字。應該有讀:val cc = new X [Int,C] ...已更新 – user79074
我有一種預感,Scala編譯器不會檢查'C'的類型以確定'i'的類型。 –