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)
}

誰かが私のスニペットを2番目のケースなしでコンパイル可能にする方法を説明する例を見せてもらえますか?

4

2 に答える 2

10

使用できます@unchecked

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

必要なケースが 1 つだけの場合、他のケースを見るとエラーになります。case _エラーが発生することを追加します。たとえば、2 要素未満の長さのリストを渡した場合に起動します。

または、リストの先頭を手動で 2 回カットすることもできますが、簡潔にはなりません。

于 2012-11-12T18:47:22.447 に答える