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
}
Run Code Online (Sandbox Code Playgroud)
board(from)和board(to)都是List [Int]
产生警告:
[warn] missing combination * Nil * *
Run Code Online (Sandbox Code Playgroud)
这看起来真的很混乱.第一种情况应该包括list1为空,list2为任何内容.最后三种情况应该包括list1,其中至少有一个元素,list2为空或至少有一个元素.
列表可以是空的也可以不是......这是四个总组合.好像没问题.缺什么?
当两个列表至少包含一个元素时,您错过了一个条件x,y并且x == y:
case (x :: _, y :: _) if x == y => ???
Run Code Online (Sandbox Code Playgroud)
或者,如果您决定如何处理,x == y您可以将最后两种情况合并,并将上面的第三种情况简单地包括在内:
case (x :: _, y :: _) => x < y
Run Code Online (Sandbox Code Playgroud)