3

定義:

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

またはxのいずれかが含まれているかどうかを調べたい。一つの方法は13

x.contains(1) || x.contains(3)

もう一つは

x.exists(y => y == 1 || y == 3)

もう1つは次のとおりです。

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 に答える