Инструкция continue в Rust
Сейчас мы изучим пропуск шага. Помимо команды break, которая
завершает круг, есть команда continue. Она запускает новую
итерацию: оставшиеся команды этого прохода не выполняются, а перебор
берет следующее значение. Иногда так проще записать отбор, хотя
задачу часто можно решить и без пропуска.
Пусть нужно перебрать числа от 1 до 9. Те, что делятся
на 2, возведем в квадрат и выведем. Те, что делятся на
3, возведем в куб и тоже выведем:
for elem in 1..=9 {
if elem % 2 == 0 {
let res = elem * elem;
println!("{}", res);
} else if elem % 3 == 0 {
let res = elem * elem * elem;
println!("{}", res);
}
}
Вывод здесь написан дважды. Хочется оставить один println!
после веток. Но для чисел, которые не делятся ни на 2, ни на
3, результата нет, и печатать их не нужно. Добавим ветку
else с continue: она сразу переходит к следующему
шагу, а общий вывод срабатывает только для подходящих чисел.
for elem in 1..=9 {
let res = if elem % 2 == 0 {
elem * elem
} else if elem % 3 == 0 {
elem * elem * elem
} else {
continue; // перейдем на новую итерацию
};
println!("{}", res); // выполнится, если делится на 2 или 3
}
Так же удобно не печатать одно выбранное число, не прерывая весь круг:
for i in 0..5 {
if i == 2 {
continue;
}
println!("{}", i); // выведет 0, 1, 3 и 4
}
Два пропуска подряд тоже допустимы:
for n in 0..4 {
if n == 1 || n == 2 {
continue;
}
println!("{}", n); // выведет 0 и 3
}
Дано число:
let skip = 3;
В переборе 0..6 выводите шаг, кроме случая, когда он равен
skip.
Дан следующий код:
for a in 0..3 {
if a == 0 {
continue;
}
println!("{}", a);
}
Перечислите числа, которые выведет программа.
Пройдите 0..5, пропустите шаги с четным значением и выведите
остальные.
Напишите цикл, который выведет только четные числа от 1 до
100, пропуская нечетные с помощью continue.