リストに文字列が存在するかどうかを確認し、それに応じてブール値を受け取る関数を呼び出す必要があります。
ライナー1つでこれを達成することは可能ですか?
以下のコードは私が得ることができる最高のものです:
val strings = List("a", "b", "c")
val myString = "a"
strings.find(x=>x == myString) match {
case Some(_) => myFunction(true)
case None => myFunction(false)
}
少ないコーディングでこれを行うことができると確信していますが、どのようにしたらいいのかわかりません!
contains
を使用するだけです
myFunction(strings.contains(myString))
厳密な等価性を使用したくない場合は、existsを使用できます。
myFunction(strings.exists { x => customPredicate(x) })
さらに簡単に!
strings contains myString
あなたの場合、リストではなくセットの使用を検討し、一意の値のみを持つようにします。重複を含める必要がある場合を除きます。
この場合、リストの周りにラッパー関数を追加する必要はありません。
これは異なる述語でも機能するはずです
myFunction(strings.find( _ == mystring ).isDefined)