Ich muss überprüfen, ob eine Zeichenfolge in einer Liste vorhanden ist, und eine Funktion aufrufen, die einen Booleschen Wert entsprechend 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 sicher, dass dies mit weniger Codierung möglich ist, aber ich weiß nicht wie!
Und wenn Sie keine strikte Gleichheit verwenden möchten, können Sie Folgendes verwenden:
quelle
Sogar einfacher!
quelle
Dies sollte auch mit verschiedenen Prädikaten funktionieren
quelle
In Ihrem Fall würde ich die Verwendung von Set und nicht List in Betracht ziehen, 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 Wrapper-Funktionen um Listen hinzufügen.
quelle
Sie können auch eine
contains
Methode mit implementierenfoldLeft
, es ist ziemlich genial. Ich liebe FoldLeft-Algorithmen.Beispielsweise:
quelle