26

このパズル、具体的には次のコードが興味深いと思いました。

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

Scala 2.9.1 では実行時に失敗しますが、2.10 M3 ではコンパイル時に失敗します (これは素晴らしいことです)。私は新しい Scala リリースで何が来るかを追跡しようとしていますが、ここで点をつなぐことができません。このより正確な動作につながった改善点は何ですか?

4

2 に答える 2

16

In scala 2.10, the pattern matcher has had a complete re-write and is now the virtualized pattern matcher. Read more about it!

于 2012-05-17T07:01:30.373 に答える
10

進行中のことは、新しいパターン マッチャーは、ネズミの巣のようなコードではないため、拡張と保守がはるかに簡単だということです。次のコード例でも同じ変更が見られるはずです。

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

何が起こっているかというと、Scala はコンパイル時にパターンが一致しないことを理解しています。

于 2012-05-17T13:31:58.450 に答える