(斯卡拉2.11.8)斯卡拉的類型推斷和多參數列表
考慮下面的代碼:
trait Class[A] {
def f1[B >: A](arg1: Int)(ord: Ordering[B]): Int
def f2[B >: A](arg1: Int, ord: Ordering[B]): Int
def f[B >: A](ord: Ordering[B]): Int = {
f1(123)(ord) // Compilation error!
f2(123, ord) // OK
}
}
這裏,線f1(123)(ord)
提高type mismatch; found : Ordering[B] required: Ordering[A] Note: B >: A, but trait Ordering is invariant in type T. You may wish to investigate a wildcard type such as _ >: A. (SLS 3.2.10)
如果我們將調用f1[B](123)(ord)
,錯誤消失。
爲什麼多個參數列表的存在會混淆typechecker?這是一個錯誤還是預期的結果?