次のようなコード行があります。
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