Etiquetas de bucle
Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 42 de 75.
Las etiquetas en Rust te ayudan a interrumpir o continuar bucles específicos cuando están anidados. Añade 'label: antes de un bucle para etiquetarlo.
Por ejemplo:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer;
// Esto romperá el bucle exterior
}
println!("({}, {})", i, j);
}
}
En este ejemplo, tenemos dos bucles anidados etiquetados como 'outer y 'inner. Cuando el producto de i y j es mayor que 5, la sentencia break 'outer; se ejecuta, lo que sale del bucle externo. La salida de este código será:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)De manera similar, puedes usar continue 'label; para continuar con la siguiente iteración del bucle especificado. Por ejemplo:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer;
// Esto continuará el bucle exterior
}
println!("({}, {})", i, j);
}
}En este caso, cuando i es igual a j, la sentencia continue 'outer; se ejecuta, lo cual omite el resto del bucle interno y continúa con la siguiente iteración del bucle externo. La salida será:
(2, 1)
(3, 1)
(3, 2)Desafío
PrincipianteEscribe un programa en Rust que utilice bucles etiquetados para encontrar el primer par de números (i, j) tales que su suma sea mayor que 10 y su producto sea un múltiplo de 12 (el producto se divide por 12 sin resto). El programa debe iterar a través de i del 1 al 20 y j del 1 al 20.
Cuando encuentres el par, imprímelo en el formato (i, j) y sal del bucle exterior.
Hoja de referencia
Las etiquetas en Rust te ayudan a romper (break) o continuar (continue) bucles específicos cuando están anidados. Añade 'label: antes de un bucle para etiquetarlo.
Usa break 'label; para salir de un bucle etiquetado específico:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer; // Rompe el bucle exterior
}
println!("({}, {})", i, j);
}
}Usa continue 'label; para continuar con la siguiente iteración de un bucle etiquetado específico:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer; // Continúa el bucle exterior
}
println!("({}, {})", i, j);
}
}Pruébalo tú mismo
fn main() {
'outer: for i in 1..=20 {
for j in 1..=20 {
// Your logic here
break 'outer;
}
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica