任何人都可以建议在列表中的元素子集上进行模式匹配的有效样式
containsSlice需要订单,不适用于无序比较器列表
这就是我要找的东西(一个不准确的句法表示来推动这一点)
List(1,2,3,4,5,6) match {
case x if x.contains(List(1,3)) => do something
case x if x.contains(List(2)) => else
case _ => do something else else
}
答案 0 :(得分:3)
如果没有模式匹配就可以活着,
可以通过检查子集中的每个元素是否包含在列表中来识别单个“列表中的元素子集”,如下所示:
if( List(3,1).forall( List(1,2,3,4,5,6).contains(_) ) ) println("do something")
答案 1 :(得分:1)
def [X]containsSubset(li:List[X],li2:List[X]) =
li2 match {
case Nil => true
case hd::_ => li.contains(hd) && containsSubset(li,tl)
}
答案 2 :(得分:1)
List(1, 2, 3, 4, 5, 6).toSet match {
case x if Set(1, 3).subsetOf(x) => println("do something")
case x if Set(2).subsetOf(x) => println("something else")
case _ => println("another thing")
}