Jos*_*eal 92 java scala scala-option
假设我有一个方法,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 =>;
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*ett 166
该Option同伴对象的apply方法作为从可空引用转换函数:
scala> Option(null)
res4: Option[Null] = None
scala> Option(3)
res5: Option[Int] = Some(3)
Run Code Online (Sandbox Code Playgroud)
RoT*_*oRa 16
该Option对象有一个apply完全相同的方法:
var myOptionalString = Option(session.get("foo"));
Run Code Online (Sandbox Code Playgroud)
请注意,在使用 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
Run Code Online (Sandbox Code Playgroud)