2016-11-09 5 views
1

Javaで10年間コーディングした後、Scalaを初めて使用しました。まだ関数型プログラミングを手に入れている。 リストがnullであるかどうかを確認するにはどうすればよいですか? filtersがNULLのfilterListがあまりにもヌルになるだろうされている場合Scala:Listのnullを確認してください

filterList.foldLeft(true)((result1, result2) => { 

val filterList = filters.map { filter => 
     //some operations 
     } 

//その他の機能: コードは次のようになります。

+2

'filters'が' null'の場合、 'filters.map'を呼び出すと例外がスローされるので、' filterList'は問題になりません。しかし、 'filters'が' List'であれば、合理的なプログラムでは最初に 'null'にする必要があります。 –

答えて

2

val filterList = if(filters == null) Seq.empty[SomeType] else filters.map {...}

しかし、あなたは私達がScalaではヌル変数を避けようとするので、それは、NULLになることはありませんことを確認してみてください。オプションの[T]タイプを使用するか、空のコレクションを使用してください。

9

filtersnull(これは空とは異なります)の場合はかなり不注意なプログラミングですが、処理することができます。

val filterList = Option(filters).map(_.map { ... 

filterListXfiltersのためのコレクション型であるタイプOption[X]です。 1番目のmapは、filtersnullの場合を除いて、Optionと2番目のmapのマップをコレクションに対してアンラップすることに注意してください。その後、2番目のmapは呼び出されず、結果全体はNoneになります。

+0

[オプション#適用](http://www.scala-lang.org/api/2.11.8/index.html#[email protected] [A](x:A):オプション[A] )ここで使用されているメソッドです。 ''引数がnullでない場合にSome(x)を作成するOptionファクトリ、NULLの場合Noneを返す "' –

関連する問題