2
    def isLegalFor(board:Board) = 
        (board(from), board(to)) match {
            case (Nil, _) => false
            case (x :: _, Nil) => true
            case (x :: _, y :: _) if x < y => true
            case (x :: _, y :: _) if x > y => false             
        }

board(from) と board(to) はどちらも List[Int]

警告が生成されます:

[warn] missing combination              *           Nil             *             *

これは本当に混乱しているようです。最初のケースでは、list1 が空であり、list2 がまったくない場合をカバーする必要があります。最後の 3 つのケースでは、list1 が少なくとも 1 つの要素を持ち、list2 が空または少なくとも 1 つの要素である場合をカバーする必要があります。

リストは空でもなくてもかまいません...合計4つの組み合わせです。大丈夫そうです。何が欠けている?

4

1 に答える 1

5

両方のリストに少なくとも 1 つの要素xandyとがある場合、条件がありませんx == y

case (x :: _, y :: _) if x == y => ???

または、どうするかを決める場合x == yは、最後の 2 つのケースを組み合わせて、上記の 3 番目のケースを単純に含めることができます。

case (x :: _, y :: _) => x < y
于 2012-11-20T18:56:23.503 に答える