Coincidencia de patrones
Una forma de comparar un valor con varias formas posibles y ejecutar el caso que encaje, extrayendo de paso sus datos.
Es como un switch mejorado: además de comparar con valores fijos, comprueba rangos, tipos o la forma de un dato y saca sus partes en variables.
Rust (match), Kotlin (when), C# (expresiones switch) y Python (match, desde la versión 3.10) la incluyen. Con enums o tipos sellados, el compilador avisa si falta algún caso.
Un ejemplo
match pago { Efectivo => …, Tarjeta { ultimos4 } => … } trata cada forma de pago y extrae los últimos dígitos de la tarjeta.
Por qué importa
La coincidencia de patrones (pattern matching) te permite comparar un valor con varias formas posibles y, a la vez, extraer sus partes. Es como un switch mucho más potente: no solo comparas con constantes, sino que descompones estructuras, filtras con condiciones y recoges los datos interiores en variables. Lo ofrecen Rust (match), Python (match desde la versión 3.10), C# (switch con patrones), Scala, Haskell, Kotlin y Swift, entre otros.
Aporta claridad cuando trabajas con datos que pueden ser de varios tipos o formas, como el resultado de una operación que puede ser éxito o error. Sustituye cadenas largas de if anidados por una lista de casos fáciles de leer. En lenguajes como Rust, además, el compilador comprueba que cubres todas las variantes posibles de una enumeración, lo que evita olvidos que de otro modo serían errores en producción.
Confusiones frecuentes
No debe confundirse con las expresiones regulares, que buscan patrones dentro de texto. La coincidencia de patrones opera sobre la estructura de los datos del programa, no sobre cadenas. Tampoco es exactamente un switch clásico de C o Java, que solo compara con valores constantes y tiene el conocido riesgo de ejecutar casos siguientes si olvidas el break. Un error típico de principiante en Rust es poner un caso comodín _ demasiado pronto: captura todo y los casos posteriores nunca se ejecutan.
Preguntas frecuentes
¿Qué hace el guion bajo `_` en un match?
Es el patrón comodín: coincide con cualquier valor y lo ignora. Se coloca al final para cubrir los casos que no has tratado de forma explícita.
¿Python tiene coincidencia de patrones?
Sí, desde Python 3.10 con la instrucción match y case. Permite descomponer listas, diccionarios y objetos, además de comparar valores.
Fuentes consultadas
- La instrucción match (Documentación de Python)
- Patterns and Matching (The Rust Programming Language)