web-dev-qa-db-fra.com

Scala vérifie si l'élément est présent dans une liste

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!

70
Dario Oddenino

Il suffit d'utiliser contains

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

Et si vous ne voulez pas utiliser une égalité stricte, vous pouvez utiliser existe:


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

Encore plus facile!

strings contains myString
8
Taylrl

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.

2
guykaplan

cela devrait fonctionner aussi avec différents prédicats

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