Подтвердить что ты не робот

Что именно улучшило Scala с совпадением шаблонов в 2.10?

Мне было интересно, что этот головоломка, в частности, этот код:

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

Сбой во время выполнения в Scala 2.9.1, но не во время компиляции w/2.10 M3 (что отлично). Я пытаюсь отслеживать, что происходит в новых выпусках Scala, но я не могу подключить точки здесь. Какое улучшение привело к более точному поведению?

4b9b3361

Ответ 1

То, что происходит, - это то, что новый шаблонный сопоставитель намного проще улучшать и поддерживать, потому что это не крысы, которые кусают часть кода. Следующий примерный код также должен иметь такое же изменение:

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

Что происходит Scala понимание во время компиляции, что шаблон никогда не может быть сопоставлен.

Ответ 2

В scala 2.10 совпадение шаблонов имеет полную перезапись и теперь является виртуализированным шаблоном. Подробнее об этом!