Je dois vérifier si une chaîne est présente dans une liste et appeler une fonction qui accepte un booléen en conséquence.
Est-il possible d'y parvenir avec un seul revêtement?
Le code ci-dessous est le meilleur que j'ai pu obtenir:
val strings = List("a", "b", "c")
val myString = "a"
strings.find(x=>x == myString) match {
case Some(_) => myFunction(true)
case None => myFunction(false)
}
Je suis sûr que c'est possible avec moins de codage, mais je ne sais pas comment!
Il suffit d'utiliser contains
myFunction(strings.contains(myString))
Et si vous ne voulez pas utiliser une égalité stricte, vous pouvez utiliser existe:
myFunction(strings.exists { x => customPredicate(x) })
Encore plus facile!
strings contains myString
Dans votre cas, j’envisagerais d’utiliser Set et non List, pour vous assurer que vous n’avez que des valeurs uniques. sauf si vous devez parfois inclure des doublons.
Dans ce cas, vous n'avez pas besoin d'ajouter de fonctions d'encapsulation autour des listes.
cela devrait fonctionner aussi avec différents prédicats
myFunction(strings.find( _ == mystring ).isDefined)