任何人都可以建议一种有效的样式来对列表中的元素子集进行模式匹配吗
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
}
任何人都可以建议一种有效的样式来对列表中的元素子集进行模式匹配吗
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
}
如果您可以在没有模式匹配的情况下生活,
可以通过检查子集中的每个元素是否包含在列表中来识别单个“列表中元素的子集”,如下所示:
if( List(3,1).forall( List(1,2,3,4,5,6).contains(_) ) ) println("do something")
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")
}
你的意思是这样的?:
def [X]containsSubset(li:List[X],li2:List[X]) =
li2 match {
case Nil => true
case hd::_ => li.contains(hd) && containsSubset(li,tl)
}