定义:
val x = List(1, 2, 3, 4)
我想查找x
是否包含1
或3
。
一种方法是
x.contains(1) || x.contains(3)
另一个是
x.exists(y => y == 1 || y == 3)
另一个是:
x.exists(List(1,3).contains(_))
我更喜欢与
相似的东西x.containsAnyOf(1, 3)
请注意x.containsSlice
在这种情况下不起作用。
有更好的解决方案吗?
答案 0 :(得分:12)
你可以做到
x exists Set(0, 1, 2)
答案 1 :(得分:5)
当然,Scala的标准库中没有containsAnyOf
。您可以使用“pimp my library”模式使其看起来像。
class ContainsAnyOf[T](seq: Seq[T]) {
def containsAnyOf(xs: T*) = seq.exists(xs.contains(_))
}
implicit def seqToContainsAnyOf[T](seq: Seq[T]) = new ContainsAnyOf(seq)
现在你可以做到:
scala> val a = List(1,2,3,4)
a: List[Int] = List(1, 2, 3, 4)
scala> a.containsAnyOf(1,3)
res0: Boolean = true