existe:
List (3, 4, 5).exists (_ == 4)
// res20: Boolean = true
hallazgo y el filtro se acercan:
List (3, 4, 5).find (_ == 4)
// res16: Option[Int] = Some(4)
List (3, 4, 5).filter (_ == 4)
// res17: List[Int] = List(4)
Mi primera respuesta fue, como otras respuestas, para usar contener:
List (3, 4, 5).contains (4)
pero luego pensé , solo funcionaría para valores encuadrados como 4, no para clases, que distinguen identidad e igualdad. Para demostrarlo, escribí una pequeña clase, que resultó me equivocada: :)
class Ue (val i: Int) {
override def equals (other: Any) = other match {
case o: Ue => i == o.i
case _ => false }
}
val a = new Ue (4)
// a: Ue = [email protected]
val b = new Ue (4)
// b: Ue = [email protected] (no identity)
a == b
// res110: Boolean = true (surprise?)
a.equals (b)
// res112: Boolean = true (expected)
a.eq (b)
// res113: Boolean = false (expected)
List (a).contains (b)
// res119: Boolean = true (surprise)
List (a).exists (_ == b)
// res120: Boolean = true (expected)
List (a).exists (_ .eq (b))
// res121: Boolean = false (expected)
veo, tengo que usar es igual a/eq/== más a menudo, para obtener las distinciones en mi cerebro.
List (3, 4, 5).contains (4)
es la respuesta más fácil.
Disculpa, te rechacé, porque pensé que 'contiene' solo funcionaría con identidad, no con igualdad. Yo te voté y comencé a escribir una prueba más larga en mi respuesta, pero en cambio probé que estaba equivocado. Lo siento. :) –
@user Y voté tu respuesta porque como puedes ver en mi segunda actualización 'contains (a)' es solo azúcar para 'exists (_ == a)' por lo que nuestras respuestas son equivalentes. –
Puede que solo sea azúcar, pero soy dulce, y como editó su respuesta, pude corregir mi voto. (Scala es solo azúcar sintáctica para Java, que es azúcar sintáctica para ensamblador ...). –