scala scala-2.10

¿Qué es lo que Scala mejoró exactamente con la coincidencia de patrones en 2.10?



scala-2.10 (2)

Me pareció interesante que este rompecabezas , específicamente este código:

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

Falla en tiempo de ejecución en Scala 2.9.1, pero falla en tiempo de compilación con 2.10 M3 (lo cual es genial). Intento rastrear lo que viene en los nuevos lanzamientos de Scala, pero no puedo conectar los puntos aquí. ¿Qué mejora llevó a este comportamiento más preciso?


En la escala 2.10, el patrón de coincidencia ha tenido una reescritura completa y ahora es el modelo de patrón virtualizado . Lea más sobre esto!


Lo que está sucediendo es que el nuevo patrón de emparejamiento es mucho más fácil de mejorar y mantener, porque no es un pedazo de código de nido de ratas. El siguiente código de ejemplo también debe mostrar el mismo cambio:

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

Lo que está pasando es que Scala entiende en el momento de la compilación que el patrón nunca puede ser igualado.