Necesito verificar si una cadena está presente en una lista y llamar a una función que acepte un booleano en consecuencia.
¿Es posible lograr esto con una sola línea?
El siguiente código es el mejor que pude obtener:
val strings = List("a", "b", "c")
val myString = "a"
strings.find(x=>x == myString) match {
case Some(_) => myFunction(true)
case None => myFunction(false)
}
Estoy seguro de que es posible hacer esto con menos codificación, ¡pero no sé cómo!

Y si no desea utilizar la igualdad estricta, puede utilizar existe:
fuente
¡Aún más fácil!
fuente
esto debería funcionar también con diferentes predicados
fuente
En su caso, consideraría usar Set y no List, para asegurarme de que solo tiene valores únicos. a menos que a veces necesite incluir duplicados.
En este caso, no es necesario agregar funciones contenedoras en las listas.
fuente
También puedes implementar un
containsmétodo confoldLeft, es bastante impresionante. Me encantan los algoritmos foldLeft.Por ejemplo:
object ContainsWithFoldLeft extends App { val list = (0 to 10).toList println(contains(list, 10)) //true println(contains(list, 11)) //false def contains[A](list: List[A], item: A): Boolean = { list.foldLeft(false)((r, c) => c.equals(item) || r) } }fuente