Sentencia Match
Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 26 de 75.
La expresión match permite comparar un valor con una serie de patrones y ejecutar código en función del patrón que coincida.
Aquí está la estructura básica de una expresión match:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... más patrones
_ => default_expression,
}La palabra clave match va seguida del valor que desea probar.
Cada brazo de la coincidencia consiste en un patrón seguido de => y el código a ejecutar.
El guion bajo _ es el caso por defecto que coincide con cualquier cosa que no haya sido emparejada por otros patrones.
Aquí tienes un ejemplo:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... more patterns,
_ => "Invalid day",
};Para múltiples líneas de código en una rama, usa un bloque:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... otros casos
_ => "Invalid day",
};Puedes hacer coincidir múltiples patrones usando |:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Las expresiones match en Rust deben ser exhaustivas, lo que significa que deben cubrir todos los valores posibles. El compilador comprobará esto por ti.
Desafío
PrincipianteCrea un programa que reciba un número de mes (1 para enero, 2 para febrero, etc.) e imprima la estación a la que pertenece. Usa una sentencia match para la lógica.
Las estaciones y sus meses correspondientes son:
- Winter: diciembre (12), enero (1), febrero (2)
- Spring: marzo (3), abril (4), mayo (5)
- Summer: junio (6), julio (7), agosto (8)
- Autumn: septiembre (9), octubre (10), noviembre (11)
Hoja de referencia
La expresión match compara un valor con patrones y ejecuta código basado en qué patrón coincide:
match variable {
pattern1 => expression1,
pattern2 => expression2,
_ => default_expression,
}Ejemplo básico:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
_ => "Invalid day",
};Para múltiples líneas de código en un brazo (arm), utiliza un bloque:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
_ => "Invalid day",
};Coincide con múltiples patrones usando |:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Las expresiones match deben ser exhaustivas; deben cubrir todos los valores posibles. El guion bajo _ es el caso por defecto que coincide con cualquier cosa que no haya coincidido con otros patrones.
Pruébalo tú mismo
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// Escribe tu código debajo
let season =
// No cambies la línea de abajo
println!("status = {}", season);
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica