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 为任何内容 最后三种情况应涵盖 list1 具有至少一个元素且 list2 为空或至少一个元素。

列表可以为空,也可以不为空……总共有四种组合。似乎还可以。什么不见​​了?

4

1 回答 1

5

当两个列表都至少有一个元素xand时,您会丢失一个条件yand x == y

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

或者,如果您决定如何处理,x == y您可以结合最后两种情况,并简单地包括上面的第三种情况:

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