Wie im folgenden Code.Was bedeutet "T =: = Int = null" in Scala?
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
}
Ich weiß, dass T =:= Int
bedeutet T
Int
vom Typ sein sollte, aber was bedeutet = null
Teil bedeuten?
Hinweis: Das Beispiel ist von mir aus. Es wäre besser, wenn Sie mir eine ordnungsgemäße Verwendung von zeigen könnten, wenn es nicht angemessen ist.
Also verschiebt es den 'Int' Test von der Kompilierzeit zur Laufzeit? Klingt wie etwas zu vermeiden. – jwvh
@jwvh, nicht der Test selbst. Sehen Sie, der "Test" ist die Suche nach einem impliziten, wenn kein Wert angegeben wird. In Dimas Fall ist "durchführen" überhaupt kein Test. – pedrofurla
@jwvh gewährt, es ist nicht sehr "Mainstream", aber es gibt einige legitime Anwendungen für ... Besonders wenn Sie weniger strenge Einschränkungen als '=: =' verwenden. Zum Beispiel: 'def foo [T] (bar: T) (implizit ev: T <:
Dima