匹配时缺少组合(List [Int],List [Int])

时间:2012-11-20 18:48:39

标签: scala

    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为空或至少有一个元素。

列表可以是空的也可以不是......总共有四种组合。好像没问题。缺少什么?

1 个答案:

答案 0 :(得分:5)

当两个列表至少包含一个元素x以及yx == y时,您错过了一个条件:

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

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

case (x :: _, y :: _) => x < y