gibt es kein Sprachniveau Konstrukt, das dies genau unterstützt, aber als @dveim weist darauf hin, ich glaube, das wird bald kommen.
, wenn Sie mit einem bestimmten praktischen Anwendungsfall im Auge fragen, haben Sie allerdings einige Optionen ein. Sie könnten Either[SomeType1, SomeType2]
verwenden, das alle Konstrukte enthält, die Sie benötigen, um diese Idee zu repräsentieren (aber keine typgebundene).
alternativ können Sie diesen Effekt mit typeclasses erreichen:
sealed trait Or[T] {
def someMethod(t: T): String
}
object Or {
implicit object OrInt extends Or[Int] {
def someMethod(t: Int): String = "int"
}
implicit object OrLong extends Or[Long] {
def someMethod(t: Long): String = "long"
}
}
object Test {
import Or._
def test[T](value: T)(implicit or: Or[T]): String =
or.someMethod(value)
}
bitte die triviale Beispiel entschuldigen, aber was man bekommt, ist hier:
- ein
sealed trait
was bedeutet, können Sie andere beschränken aus mehr Instanzen der Or
Familie Zugabe (sofern sie nicht die eigentliche Datei bearbeiten können es in definiert ist)
- eine gut getippt Art und Weise zu bestimmen, welche Funktionen, die Sie haben wollen ha Anh in den zwei verschiedenen Fällen
planen Sie später mit instanceof zu überprüfen? – Ven
@Ven Muster – user3663882
in Ordnung, so Instanceof entsprechen. Works, so lange sind Sie sich bewusst Typ Löschung – Ven