當我聲明class Pair[T : Ordering]
時,它要求隱含值爲Ordering[T]
。在下面的例子中,我試圖找出Ordering[Int]
的隱含值來自哪裏。上下文綁定混淆
它看起來像應該是這裏的隱式值,但它沒有被導入,所以隱式值從哪裏得到?
class Pair[T : Ordering](val first: T, val second: T) {
def smaller(implicit ord: Ordering[T]) =
if(ord.compare(first, second) < 0) first else second
}
object Run extends App {
val p = new Pair[Int](2, 3)
}
在Intellij中,你可以通過命令+ shift + p(不知道其他平臺的相關信息,可能是ctrl而不是命令)來了解什麼是implicits。 – Noah
您應該知道,Scala標準'Predef'包含'Pair [A,B] = Tuple2 [A,B]'的別名。隱藏內置類型通常是一個糟糕的主意。還有'Triple [A,B,C] = Tuple3 [A,B,C]'。 –