Ich versuche, eine C# Syntax in Scala zu reproduzieren:Implizite Konvertierung auf Null Typ
Der C# -Code:
val myValue = myObject ?? new MyClass();
im Grunde 'myValue Willen enthält 'myObject', wenn es nicht null ist, oder eine neue Instanz von 'MyClass', wenn sie null ist.
Dies ist die Scala-Code, den ich zu laufen versucht:
case class ShortCond(original: Any){
def ??(fallback : Any) {
if (original == null)
return fallback
return original
}
}
implicit def any2ShortCond(original: Any) = ShortCond(original)
val myString = null
val value = myString ?? "myString is null"
Es funktioniert, wenn myString nicht null ist, aber nicht, wenn myString null ist, gibt sie:
error: value ?? is not a member of Null
val value = myString ?? "myString is null"
ich das verstehen Fehler, aber gibt es einen Weg, dies in Scala zu erreichen oder ist es nicht möglich?
Dank
Scala ermutigt Sie, "Null" in Ihrem Code überhaupt nicht zu verwenden. Das sollten Sie anstreben. –
Ich weiß, dass es eine schlechte Methode ist, null in Scala-Code zu verwenden, aber der Null-Wert kann durch einen Aufruf einer Bibliotheksmethode zurückgegeben werden, und Sie müssen damit umgehen. – reevolt
Sie haben Recht. Die eigentliche Sache zu tun ist in der Regel kümmern sich um die 'Null'-Werte von 3rd-Party-Bibliotheken auf der niedrigsten Ebene, die Sie können, und dann propagieren' Option [T] 'oder andere null zu vermeiden Werte. –