Uso de Match Case en Rust para Control de Flujo
Clase 12 de 21 • Curso de Backend con Rust: Bases de Datos, Controladores y Templates
Resumen
Cuando tienes que ejecutar una pieza de código u otra dependiendo el valor de una variable, simplemente utilizas la sentencia if/else
. Pero si tienes muchas posibilidades y condiciones diferentes, usar if
se vuelve algo sucio y poco legible el código.
Sentencia Match en Rust
Muchos lenguajes de programación tienen la sentencia switch/case
para actuar de una manera u otra a partir del valor de una variable.
Rust innova en este aspecto y ofrece la sentencia match
que, además de responder de múltiples maneras dependiendo el valor de una variable, permite crear una estructura muy similar a un switch
, pero más poderoso.
fn main() {
let edad = 18;
match edad {
17 => { /* ... */ }, // Cuando el valor es 17
18 => { /* ... */ } // Cuando el valor es 18
_ => { /* ... */ } // Valor por defecto
}
}
En este ejemplo estamos evaluando la variable edad
y, dependiendo el valor de la misma, se ejecuta el código dentro de los {}
. Utilizamos también el _
como valor por defecto si no coincide ningún valor del match
.
También puedes establecer condiciones en cada caso:
fn main() {
let edad = 18;
match edad {
0..=16 => { /* ... */ }, // de 0 a 16 inclusive
17 => { /* ... */ },
18 => { /* ... */ }
19 | 20 | 21 => { /* ... */ }, // (or) 19, 20 o 21
_ => { /* ... */ }
}
}
Lo poderoso de esta sentencia es que puedes elegir entre ejecutar la pieza de código dentro de los {}
o incluso devolver un valor y almacenarlo dentro de una variable:
fn main() {
let edad = 18;
let resultado = match edad {
0..=16 => "Entre 0 y 16",
17 => "El valor es 17",
18 => "El valor es 18",
19 | 20 | 21 => "El valor es 19, 20 o 21",
_ => "Valor por defecto"
};
println!("{}", resultado);
}
Observa también que no necesitas usar la palabra return
aunque no te olvides el ;
al cerrar el match
.
match
es una gran innovación de Rust. Con más posibilidades que un switch/case
que tal vez ya conozcas. Explora esta característica, ya que te será muy útil en el futuro.
Contribución creada por: Kevin Fiorentino.