Angenommen, ich habe eine Methode session.get(str: String): String
, aber Sie wissen nicht, ob Sie eine Zeichenfolge oder eine Null zurückgeben, da sie von Java stammt.
Gibt es eine einfachere Möglichkeit, dies in Scala anstelle von session.get("foo") == null
zu behandeln? Vielleicht gilt etwas Magie wie ToOption(session.get("foo"))
und dann kann ich es wie Scala behandeln
ToOption(session.get("foo")) match {
case Some(_) =>;
case None =>;
}
Die Option
-Methode des apply
-Companion-Objekts dient als Konvertierungsfunktion aus nullfähigen Referenzen:
scala> Option(null)
res4: Option[Null] = None
scala> Option(3)
res5: Option[Int] = Some(3)
Das Option
-Objekt hat eine apply
-Methode, die genau das tut:
var myOptionalString = Option(session.get("foo"));
Beachten Sie, dass es bei der Arbeit mit Java-Objekten nicht wie erwartet funktioniert:
val nullValueInteger : Java.lang.Integer = null
val option: Option[Int] = Option(nullValueInteger)
println(option) // Doesn't work - zero value on conversion
val nullStringValue : String = null
val optionString: Option[String] = Option(nullStringValue)
println(optionString) // Works - None value