104 votes

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

Je dois vérifier si une chaîne de caractères 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 one liner ?

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 qu'il est possible de faire cela en codant moins, mais je ne sais pas comment !

146voto

Kim Stebel Points 22873

Il suffit d'utiliser contains

myFunction(strings.contains(myString))

35voto

Matt Hughes Points 483

Et si vous ne voulez pas utiliser l'égalité stricte, vous pouvez utiliser exists :

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

23voto

Taylrl Points 565

Encore plus facile !

strings contains myString

3voto

DanieleDM Points 111

Cela devrait également fonctionner avec un prédicat différent

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

2voto

guykaplan Points 9

Dans votre cas, j'envisagerais d'utiliser Set et non List, pour vous assurer de n'avoir que des valeurs uniques, à moins que vous n'ayez besoin d'inclure parfois des doublons.

Dans ce cas, il n'est pas nécessaire d'ajouter des fonctions enveloppantes autour des listes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X