Menu
CoddyTech

La expresión 'match'

Parte de la sección Lógica y Flujo del Journey de Rust de Coddy. Lección 1 de 66.

La expresión match es una potente herramienta de Rust para la coincidencia de patrones que te permite comparar un valor con distintos patrones y ejecutar código según el patrón que coincida. Piensa en ella como una versión más avanzada de las instrucciones if, capaz de gestionar varias condiciones con elegancia.

Esta es 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 de match se llama «brazo». => 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 patrón que «atrapa todo» para cualquier valor que no coincida con los demás patrones.

Aquí tienes un ejemplo sencillo que comprueba 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 todos los valores posibles. Por eso el comodín _ es tan importante: garantiza que hayas cubierto todos los casos que no se hayan especificado explícitamente.

match es una expresión, así que también puede producir un valor. Cuando es la última expresión de una función, el valor del brazo que coincide es lo que devuelve la función:

fn day_name(day: i32) -> String {
    match day {
        1 => String::from("Monday"),
        2 => String::from("Tuesday"),
        _ => String::from("Another day"),
    }
}

Como esta función devuelve un String, cada brazo convierte su texto (un &str) en un String con String::from o .to_string().

challenge icon

Desafío

Fácil

Escribe una función describe_number que tome num y devuelva una descripción en forma de cadena basada en el valor del número.

Usa una expresión match para devolver diferentes descripciones para diferentes números.

Condiciones:

  • Si num es 0, devuelve "zero"
  • Si num es 1, devuelve "one"
  • Si num es 2, devuelve "two"
  • Si num es 3, devuelve "three"
  • Para cualquier otro número, devuelve "many"

Parámetros:

  • num (i32): El número que se describirá

Devuelve: Una descripción en forma de cadena del número (String)

Pruébalo tú mismo

fn describe_number(num: i32) -> String {
    // Escribe el código aquí
}
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 Lógica y Flujo

Practica por tu cuenta: Compilador de Rust online