web-dev-qa-db-fra.com

Envelopper la méthode null-return en Java avec Option dans Scala?

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 =>;
}
90
José Leal

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)
159
Tom Crockett

L'objet Option a une méthode apply qui fait exactement cela:

var myOptionalString = Option(session.get("foo"));
15
RoToRa

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
0
DekelM