La expresión 'if let'
Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 4 de 66.
A veces solo necesitas verificar un patrón específico y no te importan todas las demás posibilidades. Escribir una expresión match completa con solo un brazo significativo y un _ que lo capture todo puede resultar verboso. Rust proporciona if let como una alternativa más concisa para estas situaciones.
La expresión if let te permite combinar la coincidencia de patrones con lógica condicional en una sola sentencia legible. Aquí tienes la sintaxis básica:
if let pattern = value {
// código a ejecutar si el patrón coincide
}Por ejemplo, en lugar de escribir un match con un solo brazo útil:
let number = 5;
match number {
5 => println!("Found five!"),
_ => (), // no hacer nada para otros valores
}Puedes usar if let para hacerlo más limpio:
let number = 5;
if let 5 = number {
println!("Found five!");
}La expresión if let solo ejecuta el bloque de código cuando el patrón coincide. Si no coincide, no ocurre nada; no es necesaria una cláusula "else" explícita a menos que se desee una.
Desafío
FácilRecibirás un número como entrada. Lee la entrada, conviértela en un entero y usa una expresión if let para verificar si el número es exactamente 42. Si coincide, imprime "The answer!". Si no coincide, no imprimas nada.
Requisitos:
- Usa una expresión
if letpara verificar si el número es igual a42 - Si el número es
42, imprime"The answer!" - Si el número es cualquier otra cosa, no imprimas nada
Entrada: Un solo número entero
Salida: Imprime "The answer!" si el número es 42, de lo contrario no imprimas nada
Hoja de referencia
La expresión if let proporciona una forma concisa de coincidir con un único patrón sin escribir una sentencia match completa.
Sintaxis básica:
if let pattern = value {
// código a ejecutar si el patrón coincide
}Ejemplo comparando match e if let:
// Usando match
let number = 5;
match number {
5 => println!("Found five!"),
_ => (), // no hacer nada para otros valores
}
// Usando if let (más conciso)
let number = 5;
if let 5 = number {
println!("Found five!");
}La expresión if let solo se ejecuta cuando el patrón coincide. Si no coincide, no ocurre nada a menos que añadas una cláusula else explícita.
Pruébalo tú mismo
use std::io;
fn main() {
// Leer entrada
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let number: i32 = input.trim().parse().expect("Please enter a valid number");
// TODO: Escribe tu código a continuación
// Usa if let para verificar si el número es igual a 42
}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