La expresión 'match'
Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 1 de 66.
La expresión match es la potente herramienta de coincidencia de patrones de Rust que te permite comparar un valor con diferentes patrones y ejecutar código basado en qué patrón coincide. Piénsalo como una versión más avanzada de las sentencias if que puede manejar múltiples condiciones de manera elegante.
Aquí tienes la sintaxis básica de una expresión match:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Cada línea dentro del match se llama un "brazo" (arm). El => separa el patrón del código que se ejecuta cuando ese patrón coincide. El guion bajo _ es un patrón comodín especial que coincide con cualquier cosa; es como un "comodín" (catch-all) para cualquier valor que no coincida con los otros patrones.
Aquí tienes un ejemplo sencillo que verifica un número:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}En Rust, las expresiones match deben ser exhaustivas, lo que significa que deben manejar cada valor posible. Es por eso que el comodín _ es tan importante: garantiza que hayas cubierto todos los casos que no se emparejaron explícitamente.
Desafío
FácilEscribe una función describe_number que reciba num y devuelva una descripción en cadena basada en el valor del número.
Usa una expresión match para devolver diferentes descripciones para diferentes números.
Condiciones:
- Si
numes0, devuelve"zero" - Si
numes1, devuelve"one" - Si
numes2, devuelve"two" - Si
numes3, devuelve"three" - Para cualquier otro número, devuelve
"many"
Parámetros:
num(i32): El número a describir
Devuelve: Una descripción en cadena del número (String)
Hoja de referencia
La expresión match compara un valor con diferentes patrones y ejecuta código basado en qué patrón coincide:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Cada línea dentro del match se llama un "brazo" (arm). El => separa el patrón del código que se ejecuta cuando ese patrón coincide.
Ejemplo:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}El guion bajo _ es un patrón comodín que coincide con cualquier cosa no cubierta por otros patrones. Las expresiones match deben ser exhaustivas: deben manejar cada valor posible.
Pruébalo tú mismo
fn describe_number(num: i32) -> String {
// Escribe el código aquí
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Flujo de control avanzado
La expresión 'match'Coincidencia de múltiples valoresCoincidencia de rangosLa expresión 'if let'Bucles como expresionesResumen - Analizador de comandos simple4Agrupando datos con Structs
¿Qué es un Struct?Visión general de los StructsAcceso a los campos de un StructStructs mutablesStructs como parámetros de funcionesStructs de tuplaResumen - Crear un Struct de Libro7Manejo de errores con 'Result'
¿Qué es un 'Result'?Uso de 'match' con 'Result'is_ok() e is_err()Atajos: unwrap y expectEl operador de signo de interrogación '?'Parsing de Strings a númerosResumen - Función de división segura10Closures y funciones anónimas
¿Qué es un Closure?Definir un Closure simpleClosures con parámetrosCapturar el entornoResumen - Closure sumador simple2Introducción a los vectores
¿Qué es un vector?Crear un vectorAñadir elementos con pushAcceder a los elementos de un vectorIterar sobre un vectorIteración mutableEliminar elementosResumen: Rastreador de puntuación básico5Pares clave-valor con Hash Maps
¿Qué es un Hash Map?Crear un Hash MapInsertar pares clave-valorAcceder a los valoresIterar sobre un Hash MapActualizar un valorEliminar un parRepaso: Contador de palabras8Proyecto: Inventario simple de artículos
Configuración del proyectoAgregar un artículoVerificar el stockVender un artículoUniendo todo3Lista de tareas en la línea de comandos
Configuración del proyectoAñadir una tareaVer todas las tareasEliminar una tareaCódigo final