不相交的模式匹配

时间:2017-05-17 16:39:00

标签: scala pattern-matching disjoint-sets

我有一个关于不相交匹配模式的问题。当每个案例不踩到其他案例时,匹配模式是不相交的。

def func(list: List[Int]): Int = list match {
  case Nil => 0
  case x::t if (x < func(t)) => x
  case x::t => func(t)
}

我的问题:“if”语句是否还要计算以检查这些案例是否脱节? 因此,如果我们有这样的修补模式,这意味着最后一个案例也包括第二个案例,无论如何它都不会脱节。但如果我将最后一个案例改为

case x::t if (x >= func(t)) => func(t)

匹配模式是否会被视为不相交?

1 个答案:

答案 0 :(得分:0)

由于Iterator<Customer> iter1 = customers1.iterator(); Iterator<Customer> iter2 = customers2.iterator(); while (iter1.hasNext() && iter2.hasNext()) { Customer cust1 = iter1.next(); Customer cust2 = iter2.next(); customerVoList.add(localCustomerVO); } = x < func(t),是的,这些模式都是不相交的。无论如何编译器都没有使用谓词不相交;这不会产生具体影响。