当只需要一个“案例”时,如何避免“匹配并非详尽无遗”?

时间:2012-11-12 18:41:18

标签: scala pattern-matching

  

可能重复:
  How to suppress “match is not exhaustive!” warning in 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)
}

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

2 个答案:

答案 0 :(得分:11)

您可以使用@unchecked

(list: @unchecked) match { ... }

答案 1 :(得分:6)

如果只需要一个案例,那么查看其他案例就意味着错误。我会添加引发错误的case _。例如,如果传递的列表长度小于2个元素,则会触发。

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