Scala模式匹配List中随机元素的子集

时间:2013-10-20 23:33:07

标签: scala

任何人都可以建议在列表中的元素子集上进行模式匹配的有效样式

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
} 

3 个答案:

答案 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")
}