【问题标题】:Missing Combination when matching on (List[Int], List[Int])在 (List[Int], List[Int]) 上匹配时缺少组合
【发布时间】:2012-11-20 18:48:39
【问题描述】:
    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 为空或至少有一个元素。

列表可以为空,也可以不为空……总共有四种组合。似乎还可以。缺少什么?

【问题讨论】:

    标签: scala


    【解决方案1】:

    当两个列表都至少有一个元素 xyx == y 时,您缺少一个条件:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多