2012-11-20 43 views
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    
     } 

板(从)和电路板(至)都列表[INT]缺失组合匹配上(列表[INT],列表[INT])

产生警告时:

[warn] missing combination    *   Nil    *    * 

这看起来很混乱。 第一种情况应该包括list1为空,而list2为任何东西 最后三种情况应该包含list1,其中至少有一个元素,list2为空或至少有一个元素。

列表可以是空的或不...这四个总的组合。看起来没问题。什么不见​​了?

回答

5

你缺少一个条件时,两个列表至少有一个元素xyx == y

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

,或者如果你决定如何处理x == y你可以结合最后两种情况,包括第三一个简单的:

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

是的,当然。谢谢。 –