web-dev-qa-db-ja.com

Scalaリストに要素が存在するかどうかを確認します

リストに文字列が存在するかどうかを確認し、それに応じてブール値を受け取る関数を呼び出す必要があります。

ライナー1つでこれを達成することは可能ですか?

以下のコードは私が得ることができる最高のものです:

val strings = List("a", "b", "c")
val myString = "a"

strings.find(x=>x == myString) match {
  case Some(_) => myFunction(true)
  case None => myFunction(false)
}

少ないコーディングでこれを行うことができると確信していますが、どのようにしたらいいのかわかりません!

70
Dario Oddenino

containsを使用するだけです

myFunction(strings.contains(myString))
104
Kim Stebel

厳密な等価性を使用したくない場合は、existsを使用できます。


myFunction(strings.exists { x => customPredicate(x) })
29
Matt Hughes

さらに簡単に!

strings contains myString
8
Taylrl

あなたの場合、リストではなくセットの使用を検討し、一意の値のみを持つようにします。重複を含める必要がある場合を除きます。

この場合、リストの周りにラッパー関数を追加する必要はありません。

2
guykaplan

これは異なる述語でも機能するはずです

myFunction(strings.find( _ == mystring ).isDefined)
2
DanieleDM