web-dev-qa-db-ja.com

Java Scalaのオプションでnullを返すメソッドをラップしますか?

メソッド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 =>;
}
91
José Leal

Optionコンパニオンオブジェクトのapplyメソッドは、null許容参照からの変換関数として機能します。

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

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

Optionオブジェクトには、まさにそれを行うapplymethodがあります。

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

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