Scalaリストのnull要素をmap
を使って空の値に置き換えようとしています。私は現在持っています:リストのnull値をScalaの別の値に置き換えます。
val arr = Seq("A:B|C", "C:B|C", null)
val arr2 = arr.map(_.replaceAll(null, ""))
これは私にNullPointerExpectionを与えます。これを行う最善の方法は何ですか?
Scalaリストのnull要素をmap
を使って空の値に置き換えようとしています。私は現在持っています:リストのnull値をScalaの別の値に置き換えます。
val arr = Seq("A:B|C", "C:B|C", null)
val arr2 = arr.map(_.replaceAll(null, ""))
これは私にNullPointerExpectionを与えます。これを行う最善の方法は何ですか?
Seq
のヌル文字列を置き換えるのではなく、文字列のヌル文字を置き換えようとしています。値がそれ以外の場合はNone
nullでなく、場合
val arr2 = arr.map(str => Option(str).getOrElse(""))
Option
ここSome(<your string>)
が生成されますので、ここで正しい方法です。 getOrElse
は、nullでない場合は文字列を返し、そうでない場合は空文字列を返します。
もっと慣用的です: 'vs.mapConserve {case null =>" "case x => x}' –
実際にはScalaで 'null'を直接使うことは勧められません。 – Zyoma
問題のデータはすでにnullを使用しています。 'null'キーワードを使用することは禁じられていません。データを取り込むときに、このような境界に制限したいだけです。そして、APIからヌルを守るため。オプションオブジェクトは、ここで行うように不必要に作成することを避けるために、値クラスにする必要があります。その場合、あなたのexprはもっと食欲をそそるでしょう。 –
'map'関数を本当に理解するには、私はhttp://learnyouahaskell.com/higher-order-functionsをお勧めします。 –