【发布时间】:2016-01-17 07:57:51
【问题描述】:
val l = 1::2::Nil
l match{ case x :: y:: Nil => println(x,y)}
执行上述代码段时出现警告:
<console>:12: warning: match may not be exhaustive.
It would fail on the following inputs: List(_), List(_, _, _), Nil
l match{ case x :: y:: Nil => println(x,y)}
^
(1,2)
但是,l match{ case List(x,y) => println(x,y)} 效果很好。
为什么?
【问题讨论】:
-
为了澄清@dk14 的回答:最后一种情况实际上并不能很好地工作,它只是未能检测到可能的错误。要看到这一点,请更改为例如
val l = 1 :: Nil:仍然没有警告,但是运行时会失败。
标签: list scala pattern-matching