我有一个关于不相交匹配模式的问题。当每个案例不踩到其他案例时,匹配模式是不相交的。
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)
匹配模式是否会被视为不相交?
答案 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)
,是的,这些模式都是不相交的。无论如何编译器都没有使用谓词不相交;这不会产生具体影响。