Supposons que j’ai une méthode session.get(str: String): String
mais que vous ne savez pas si elle vous renverra une chaîne ou une valeur null, car elle provient de Java.
Existe-t-il un moyen plus simple de traiter cela dans Scala au lieu de session.get("foo") == null
? Peut-être que la magie s’applique comme ToOption(session.get("foo"))
et que je pourrai ensuite le traiter à la Scala comme
ToOption(session.get("foo")) match {
case Some(_) =>;
case None =>;
}
La méthode Option
de l'objet compagnon apply
sert de fonction de conversion à partir de références nullables:
scala> Option(null)
res4: Option[Null] = None
scala> Option(3)
res5: Option[Int] = Some(3)
L'objet Option
a une méthode apply
qui fait exactement cela:
var myOptionalString = Option(session.get("foo"));
Notez que lorsque vous travaillez avec des objets Java, cela ne fonctionnera pas comme prévu:
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