2012-11-20 42 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

是的,當然。謝謝。 –