Обертывание метода null-returning в Java с опцией в Scala?


Предположим, у меня есть способ session.get(str: String): String но вы не знаете, будет ли он возвращать вам строку или null, потому что он исходит из Java.

есть ли более простой способ лечения этого в Scala вместо session.get("foo") == null ? Может быть, какая-то магия применяется как ToOption(session.get("foo")) и тогда я могу относиться к нему в Scala образом, как

ToOption(session.get("foo")) match {
    case Some(_) =>;
    case None =>;
}
3 88

3 ответа:

The Option объект-компаньон apply метод служит в качестве функции преобразования из nullable ссылки:

scala> Option(null)
res4: Option[Null] = None

scala> Option(3)   
res5: Option[Int] = Some(3)

The

обратите внимание, что при работе с объектами Java он не будет работать так, как ожидалось:

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