0

次のようなコード行があります。

Option(str).map(_.trim).getOrElse("")

考え方は簡単です。入力文字列をトリミングするか、何もない場合は空白の文字列を返します。

しかし、str がnull: error: value trim が Null のメンバーではない場合、scala コンソールで失敗します。

map()オブジェクトが の場合でもscala が関数をトリガーするため、理由は明らかですNone。でもNone直帰じゃないの?

4

1 に答える 1

3

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
于 2013-08-30T18:46:20.807 に答える