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为空或至少有一个元素。
列表可以是空的也可以不是......总共有四种组合。好像没问题。缺少什么?
答案 0 :(得分:5)
当两个列表至少包含一个元素x
以及y
和x == y
时,您错过了一个条件:
case (x :: _, y :: _) if x == y => ???
或者如果您决定如何处理x == y
,您可以将最后两种情况合并,并将上面的第三种情况简单地包括在内:
case (x :: _, y :: _) => x < y