Menu
Coddy logo textTech

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.

challenge icon

Desafío

Principiante

Crea 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);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentals