существует:
List (3, 4, 5).exists (_ == 4)
// res20: Boolean = true
находка и фильтр приблизились:
List (3, 4, 5).find (_ == 4)
// res16: Option[Int] = Some(4)
List (3, 4, 5).filter (_ == 4)
// res17: List[Int] = List(4)
Мой первый ответ, как и другие ответы, содержал:
List (3, 4, 5).contains (4)
но потом я подумал, что это будет работать только для коробочных значений, таких как 4, а не для классов, которые различают идентичность и равенство.Чтобы доказать это, я написал небольшой класс, который доказал, что me не так: :)
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 = Ue@1e040e5
val b = new Ue (4)
// b: Ue = Ue@1a4548b (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)
Понятно, мне приходится чаще использовать equals / eq / ==, чтобы получитьразличия в моем мозгу.
List (3, 4, 5).contains (4)
- это самый простой ответ.