Bucles como expresiones
Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 5 de 66.
En la mayoría de los lenguajes de programación, los bucles son sentencias 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 desde un bucle, utiliza break seguido del valor que deseas devolver:
let result = loop {
// alguna comprobación de 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 empezando desde 10:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // devuelve el número par
}
counter += 1;
};
println!("First even number: {}", first_even);El bucle continúa hasta que encuentra un número par, luego utiliza 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 utiliza un bucle como expresión para encontrar el primer número divisible por 7 empezando desde 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 que sea divisible por 7 (el resto es 0 al dividir por 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 empezando desde el número de entrada
Hoja de referencia
En Rust, los bucles pueden ser expresiones que devuelven un valor. Usa break seguido de un valor para salir del bucle y devolver ese valor:
let result = loop {
if condition_met {
break 42; // salir del bucle y devolver 42
}
};Ejemplo para encontrar el primer número par:
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);Pruébalo tú mismo
use std::io;
fn main() {
// Leer la 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 a continuación
// Usa una expresión de bucle para encontrar el primer número divisible por 7
// Imprimir 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 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