Обертывание метода 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 ответа:
The
Option
объект-компаньонapply
метод служит в качестве функции преобразования из nullable ссылки:scala> Option(null) res4: Option[Null] = None scala> Option(3) res5: Option[Int] = Some(3)
обратите внимание, что при работе с объектами 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