Un caso sencillo de MATCH

El match es una de las expresiones más potentes que hay en Scala que permite aplicar pattern matching. Ya os hablaré de ello en un futuro. Por ahora os voy a enseñar un caso de uso sencillo del match en el que lo usamos para devolver una expresión en función de lo que valga una variable.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

En Scala, el operador match nos ofrece una forma muy poderosa y elegante de evaluar variables y devolver expresiones según su valor, funcionando de manera similar a un switch en otros lenguajes, pero con ventajas importantes. A diferencia del clásico switch, en Scala no necesitamos preocuparnos por los break ni por ejecutar código imperativo dentro de cada caso; aquí lo que hacemos es devolver expresiones directamente.

Imaginemos que tenemos una variable llamada mes que contiene un número del 1 al 12, y queremos devolver el nombre del mes correspondiente. Con match, simplemente escribimos la variable seguida de la palabra match y abrimos un bloque donde definimos cada caso con la palabra clave case, seguida del valor a comparar y una flecha que indica la expresión a devolver. Por ejemplo:

val mes = 6

val nombreMes = mes match {
  case 1 => "enero"
  case 2 => "febrero"
  case 3 => "marzo"
  case 4 => "abril"
  case 5 => "mayo"
  case 6 => "junio"
  case 7 => "julio"
  case 8 => "agosto"
  case 9 => "septiembre"
  case 10 => "octubre"
  case 11 => "noviembre"
  case 12 => "diciembre"
}
println(nombreMes)  // Imprime: junio

Como vemos, no hace falta poner println dentro de cada caso, porque el match devuelve la expresión que corresponde al valor de la variable. Esto es posible porque Scala es un lenguaje funcional y trabaja con expresiones, no con sentencias. Por eso, podemos incluso usar el resultado del match directamente dentro de un println o como argumento de cualquier función.

Un detalle importante es que si el valor de la variable no coincide con ninguno de los casos definidos, el programa lanzará un error porque el match espera siempre devolver algo. Para evitar esto, Scala tiene una expresión especial llamada case _, que actúa como un caso por defecto, similar al default en otros lenguajes. El guion bajo _ es una palabra clave que significa cualquier valor. Así, podemos manejar valores no previstos sin que el programa falle:

val mes = 13

val nombreMes = mes match {
  case 1 => "enero"
  case 2 => "febrero"
  case 3 => "marzo"
  case 4 => "abril"
  case 5 => "mayo"
  case 6 => "junio"
  case 7 => "julio"
  case 8 => "agosto"
  case 9 => "septiembre"
  case 10 => "octubre"
  case 11 => "noviembre"
  case 12 => "diciembre"
  case _ => "ninguno"
}
println(nombreMes)  // Imprime: ninguno

El match evalúa cada caso en orden y ejecuta el primero que coincida. Si no encuentra ninguno, recurre al case _ para devolver una expresión por defecto. Esto nos da mucha seguridad y flexibilidad para manejar cualquier valor.

Además, aunque aquí hemos visto el uso básico de match para comparar valores simples, este operador es mucho más potente. Más adelante podemos usarlo para hacer pattern matching con estructuras complejas, listas o incluso para comprobar el tipo de un objeto dentro del mismo match. Esto abre un abanico enorme de posibilidades para escribir código claro, conciso y expresivo.

Por ahora, con esta forma sencilla de usar match como un switch mejorado, podemos devolver expresiones según el valor de una variable sin preocuparnos por sentencias ni por errores inesperados. Es una herramienta fundamental en Scala que nos permite escribir código funcional y elegante, y que podemos usar prácticamente en cualquier lugar donde necesitemos evaluar condiciones y devolver resultados.

Lista de reproducción
  1. 1
    Introducción a Scala
    6 minutos
  2. 2
    Instalar Scala
    6 minutos
  3. 3
    Primeros pasos con el intérprete
    5 minutos
  4. 4
    Variables con val y var
    7 minutos
  5. 5
    Declarando funciones
    7 minutos
  6. 6
    Inciso sobre Units e iguales
    5 minutos
  7. 7
    Presentación de los objetos singleton
    6 minutos
  8. 8
    Editando y compilando archivos
    8 minutos
  9. 9
    Descargar e instalar Scala IDE
    6 minutos
  10. 10
    Proyectos y worksheets en Scala IDE
    7 minutos
  11. 11
    El condicional IF en Scala
    8 minutos
  12. 12
    Un caso sencillo de MATCH
    6 minutos
  13. 13
    Bucles WHILE y DO-WHILE (y String Interpolation)
    7 minutos
  14. 14
    El sistema de tipos
    7 minutos
  15. 15
    Colecciones
    9 minutos
  16. 16
    Funciones básicas de una colección
    8 minutos
  17. 17
    El map (es sensacional)
    8 minutos
  18. 18
    Flatten y flatMap
    9 minutos
  19. 19
    Sets, parte 1 de 3: Set
    8 minutos
  20. 20
    Sets, parte 2 de 3: Sets mutables
    4 minutos
  21. 21
    Sets, parte 3 de 3: SortedSet
    6 minutos
  22. 22
    Mapas (parte 1 de 2): Creando mapas
    9 minutos
  23. 23
    Mapas (parte 2 de 2): Operaciones
    8 minutos
  24. 24
    foreach y for
    8 minutos