Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmMuLb 217 of 373 menu
◀ ▶

Метка цикла в Rust

Сейчас мы изучим метку цикла. Циклы можно вкладывать друг в друга. Внутренний выход по умолчанию останавливает только ближайшее тело. Метка перед кругом называет, из какого вложенного круга выходить.

Запись начинается с одинарной кавычки и двоеточия, например 'outer: перед loop. Чтобы выйти сразу из внешнего круга, у break указывают имя метки:

'outer: loop { loop { break 'outer; } println!("inner done"); } println!("outer done"); // выведет outer done

Строка "inner done" не выполнится. Метки удобны, когда внутри несколько уровней:

'top: for i in 0..3 { for j in 0..3 { if i == 1 && j == 1 { break 'top; } } } println!("after"); // выведет after

Пусть нужно получить строку "111222333444555666777888999". Одним циклом здесь не обойтись. Внешний круг перебирает числа от 1 до 9, а внутренний повторяет текущее число три раза. Счетчики принято называть i, j и, если понадобится третий круг, k.

let mut text = String::from(""); for i in 1..=9 { for _j in 1..=3 { text.push_str(&i.to_string()); } } println!("{}", text); // выведет 111222333444555666777888999

Дано число:

let hit = 2;

Пометьте внешний круг именем 'main:, внутри перебирайте 0..5 и при шаге hit завершите внешнее тело. Выведите "stop" после кругов.

Дан следующий код:

'a: loop { break; } println!("x");

Скажите, выполнится ли вывод "x".

Сделайте два вложенных круга без условия. Внутренний сразу прерывает внешний по метке 'out:. После скобок выведите "ok".

С помощью двух вложенных циклов соберите и выведите строку "111222333444555666777888999".

С помощью двух вложенных циклов соберите и выведите строку "11 12 13 21 22 23 31 32 33".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить