3

定义:

val x = List(1, 2, 3, 4)

我想查找是否x包含1or 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在这种情况下不起作用。

有更好的解决方案吗?

4

2 回答 2

12

你可以做

x exists Set(0, 1, 2)
于 2012-12-06T09:10:44.313 回答
5

当然,containsAnyOfScala 的标准库中没有。您可以使用“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
于 2012-12-06T09:16:20.907 回答