Scala在2.10中通过模式匹配改善了什么?

时间:2012-05-17 03:01:33

标签: scala scala-2.10

我觉得this puzzler很有意思,特别是这段代码:

val (i, j): (Int, Int) = ("3", "4")

在Scala 2.9.1中在运行时失败,但在编译时失败了w / 2.10 M3(这很棒)。我尝试跟踪新Scala版本中的内容,但我无法在此处连接点。什么改进导致了这种更精确的行为?

2 个答案:

答案 0 :(得分:16)

在scala 2.10中,模式匹配器已经完成了重写,现在是虚拟化模式匹配器Read more about it!

答案 1 :(得分:10)

正在发生的事情是新的模式匹配器更容易增强和维护,因为它不是一个老鼠嵌套代码。以下示例代码也应显示相同的更改:

("3", "4") match { case (i, j): (Int, Int) => /* whatever */ }

Scala在编译时理解模式永远无法匹配。