Метки циклов
Часть раздела Fundamentals путешествия по Rust на Coddy — урок 42 из 75.
Метки в Rust помогают прерывать или продолжать выполнение конкретных циклов, когда они являются вложенными. Добавьте 'label: перед циклом, чтобы пометить его.
Например:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer;
// Это прервет внешний цикл
}
println!("({}, {})", i, j);
}
}
В этом примере у нас есть два вложенных цикла с метками 'outer и 'inner. Когда произведение i и j становится больше 5, выполняется инструкция break 'outer;, которая завершает внешний цикл. Результат выполнения этого кода будет следующим:
(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)Аналогично, вы можете использовать continue 'label;, чтобы перейти к следующей итерации указанного цикла. Например:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer;
// Это продолжит внешний цикл
}
println!("({}, {})", i, j);
}
}В этом случае, когда i равно j, выполняется оператор continue 'outer;, который пропускает оставшуюся часть внутреннего цикла и переходит к следующей итерации внешнего цикла. Результат будет следующим:
(2, 1)
(3, 1)
(3, 2)Задание
НовичокНапишите программу на Rust, которая использует именованные циклы (labeled loops), чтобы найти первую пару чисел (i, j), такую, что их сумма больше 10, а их произведение кратно 12 (произведение делится на 12 без остатка). Программа должна перебирать i от 1 до 20 и j от 1 до 20.
Когда вы найдете такую пару, выведите ее в формате (i, j) и выйдите из внешнего цикла.
Шпаргалка
Метки в Rust помогают прерывать или продолжать выполнение определенных циклов, когда они вложены. Добавьте 'label: перед циклом, чтобы пометить его.
Используйте break 'label; для выхода из конкретного помеченного цикла:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i * j > 5 {
break 'outer; // Прерывает внешний цикл
}
println!("({}, {})", i, j);
}
}Используйте continue 'label; для перехода к следующей итерации конкретного помеченного цикла:
'outer: for i in 1..=3 {
'inner: for j in 1..=3 {
if i == j {
continue 'outer; // Продолжает внешний цикл
}
println!("({}, {})", i, j);
}
}Попробуйте сами
fn main() {
'outer: for i in 1..=20 {
for j in 1..=20 {
// Your logic here
break 'outer;
}
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод