3
如下面的代碼。Scala中的「T =:= Int = null」是什麼意思?
class A[T] {
def add(n: Int)(implicit env: T =:= Int = null): Int = n + 1
}
object A extends App {
val a = new A[Int]
a.add(1) // 2
}
我知道T =:= Int
意味着T
應該Int
型的,但到底是什麼= null
部分是什麼意思?
注意:這個例子是我做的了。如果你不能正確使用= null
,那會更好。
因此它將'Int'測試從編譯時間移動到運行時間?聽起來像是要避免的事情。 – jwvh
@jwvh,而不是測試本身。看,如果沒有提供一個值,那麼「測試」就是隱式搜索。在迪瑪的情況下,「執行」根本沒有測試。 – pedrofurla
@jwvh被授予,它不是非常「主流」,但是它有一些合理的用途......尤其是,如果你使用的約束條件不如'=:='更嚴格。例如:'def foo [T](bar:T)(imp ev:T <:
Dima