メソッドsession.get(str: String): String
がありますが、Javaから来ているため、文字列を返すのか、nullを返すのかわかりません。
session.get("foo") == null
の代わりにScalaでこれを処理する簡単な方法はありますか? ToOption(session.get("foo"))
のような魔法が適用され、Scalaのように扱うことができます。
ToOption(session.get("foo")) match {
case Some(_) =>;
case None =>;
}
Option
コンパニオンオブジェクトのapply
メソッドは、null許容参照からの変換関数として機能します。
scala> Option(null)
res4: Option[Null] = None
scala> Option(3)
res5: Option[Int] = Some(3)
Option
オブジェクトには、まさにそれを行うapply
methodがあります。
var myOptionalString = Option(session.get("foo"));
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