Bucles como expresiones
Parte de la sección Lógica y Flujo del Journey de Rust de Coddy. Lección 5 de 66.
En la mayoría de los lenguajes de programación, los bucles son instrucciones que ejecutan código repetidamente. Pero Rust tiene una característica única: los bucles también pueden ser expresiones que devuelven un valor. Esto significa que puedes asignar el resultado de un bucle a una variable.
Para devolver un valor de un loop, usas break seguido del valor que quieres devolver:
let result = loop {
// comprobación de alguna condición
if condition_met {
break 42; // salir del bucle y devolver 42
}
};Aquí tienes un ejemplo práctico que encuentra el primer número par comenzando desde 10:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // devolver el número par
}
counter += 1;
};
println!("First even number: {}", first_even);El bucle continúa hasta que encuentra un número par, después usa break counter para salir del bucle y devolver ese número. El valor devuelto se asigna a first_even.
Desafío
FácilRecibirás un número inicial como entrada. Lee la entrada, conviértela en un entero y usa un loop como expresión para encontrar el primer número divisible por 7 a partir de ese número.
Requisitos:
- Usa una expresión
loopque devuelva un valor - Empieza a comprobar desde el número de entrada
- Encuentra el primer número divisible por 7 (el resto es 0 al dividirlo entre 7)
- Usa
breakpara devolver el número encontrado desde el bucle - Imprime el resultado
Entrada: Un único entero que representa el número inicial
Salida: Imprime el primer número divisible por 7 a partir del número de entrada
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 start_number: i32 = input.trim().parse().expect("Invalid input");
// TODO: Escribe tu código debajo
// Usa una expresión de bucle para encontrar el primer número divisible por 7
// Imprime el resultado
// println!("{}", result);
}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