it-swarm.com.de

Scala prüft, ob ein Element in einer Liste vorhanden ist

Ich muss überprüfen, ob eine Zeichenfolge in einer Liste vorhanden ist, und eine Funktion aufrufen, die dementsprechend einen Booleschen Wert akzeptiert.

Ist es möglich, dies mit einem Einzeiler zu erreichen?

Der folgende Code ist der beste, den ich bekommen konnte:

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

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

Ich bin mir sicher, dass dies mit weniger Programmieraufwand möglich ist, aber ich weiß nicht wie!

70
Dario Oddenino

Benutze einfach contains

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

Und wenn Sie keine strikte Gleichheit verwenden möchten, können Sie existierende verwenden:


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

Sogar einfacher!

strings contains myString
8
Taylrl

In Ihrem Fall würde ich in Betracht ziehen, Set und nicht List zu verwenden, um sicherzustellen, dass Sie nur eindeutige Werte haben. es sei denn, Sie müssen manchmal Duplikate einfügen.

In diesem Fall müssen Sie keine Wrapperfunktionen um Listen hinzufügen.

2
guykaplan

dies sollte auch mit anderen Prädikaten funktionieren

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