La expresión 'if let'
Parte de la sección Lógica y Flujo del Journey de Rust de Coddy. Lección 4 de 66.
A veces solo necesitas comprobar un patrón específico y no te importan todas las demás posibilidades. Escribir una expresión match completa con una única rama significativa y un _ que abarque todos los demás casos 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 la lógica condicional en una sola instrucción legible. Esta es 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 único brazo útil:
let number = 5;
match number {
5 => println!("Found five!"),
_ => (), // no hagas 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 necesario un caso explícito de "else" a menos que quieras uno.
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 comprobar 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 comprobar 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 entero
Salida: Imprime "The answer!" si el número es 42; de lo contrario, no imprimas nada
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 debajo
// Usa if let para comprobar si number 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 Lógica y Flujo
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 finalPractica por tu cuenta: Compilador de Rust online