0

可能重复:
如何抑制“匹配并不详尽!” Scala中的警告

object Euler extends App {
val Max = 4000000

def p2: Int = p2(0 :: 1 :: Nil).filter(_ % 2 == 0).sum

def p2(list: List[Int]): List[Int] = {
    list match {
        case n1 :: n2 :: tail => if (Max < n1) n2 :: tail
                                 else p2(n1 + n2 :: list)
        // case _ => 0 :: 0 :: Nil // "match is not exhaustive"
    }
}   
println(p2)
}

有人可以向我展示一个示例,说明如何在没有第二种情况的情况下使我的代码段可编译吗?

4

2 回答 2

10

您可以使用@unchecked

(list: @unchecked) match { ... }
于 2012-11-12T18:47:13.310 回答
6

如果只需要一个案例,那么看到其他案例将意味着错误。我要补充case _一点,这会引发错误。例如,如果您传递的列表长度少于 2 个元素,它将触发。

或者,您可以手动剪切列表的头部两次,尽管它不会那么简洁。

于 2012-11-12T18:47:22.447 回答