次のようなコード行があります。
Option(str).map(_.trim).getOrElse("")
考え方は簡単です。入力文字列をトリミングするか、何もない場合は空白の文字列を返します。
しかし、str がnull
: error: value trim が Null のメンバーではない場合、scala コンソールで失敗します。
map()
オブジェクトが の場合でもscala が関数をトリガーするため、理由は明らかですNone
。でもNone
直帰じゃないの?
次のようなコード行があります。
Option(str).map(_.trim).getOrElse("")
考え方は簡単です。入力文字列をトリミングするか、何もない場合は空白の文字列を返します。
しかし、str がnull
: error: value trim が Null のメンバーではない場合、scala コンソールで失敗します。
map()
オブジェクトが の場合でもscala が関数をトリガーするため、理由は明らかですNone
。でもNone
直帰じゃないの?
2.9.1では、私にとってはうまくいきます:
scala> val x : Option[String] = Option(null)
x: Option[String] = None
scala> x.map{_.length}
res4: Option[Int] = None
Option[Null]
タイプがの代わりであるため、機能しませんOption[String]
:
scala> Option(null).map(_.trim)
<console>:8: error: value trim is not a member of Null
Option(null).map(_.trim)
正しいタイプを指定すると機能します:
scala> Option[String](null).map(_.trim)
res3: Option[java.lang.String] = None