Перейти к основному содержанию

10. Вложенные циклы

Циклы можно вкладывать друг в друга и это дает интересные возможности. Например, если отдельным циклом можно вывести только один ряд (или колонку) значений, то 2 цикла позволяют уже вывести двумерную матрицу.

fn main() {
    for row in 1..5 {
        print!("Строка {row}:   ");
        for col in 5..8 {
            print!("{}   ", col);
        }
        println!();
    }
}
Результат: Строка 1: 5 6 7 Строка 2: 5 6 7 Строка 3: 5 6 7 Строка 4: 5 6 7

Общий синтаксис:

for variable in range {
    for variable in range {
        body_of_loop;
    }
}

Аналогичным образом делать вложенные циклы используя while и loop в любых комбинациях.

Метки

Метки необходимы нам для того, чтобы указать программе к каким именно циклам применять операторы continue и break. Для этого перед именем цикла нужно указать метку с двоеточием, а в теле цикла использовать после оператора эту метку. Название метки начинается с одинарной кавычки.

Общий синтаксис:

'label1: for variable in range {
	'label2:  for variable in range {
		body_of_loop;
		continue 'label2;
	}
}

Пример с метками для внешнего цикла и для внутреннего:

fn main() {
    'out: for _ in 1..5 {
        'inn: for j in 1..6 {
            if j == 3 {
                continue 'inn;
            }
            print!("{} ", j);
        }
        println!();
    }
}
Результат: 1 2 4 5 1 2 4 5 1 2 4 5 1 2 4 5

Здесь пропущен средний столбец, а если мы будем прерывать внешний цикл, то будет напечатано:

1 2 1 2 1 2 1 2

Для просмотра заданий и решений, а также публикации своих решений необходимо зарегистрироваться на сайте.

Всё бесплатно, мы просто хотим с вами познакомиться и понять насколько актуально то, что мы делаем.

© Клют И. А., 2022. Копирование контента возможно только с письменного разрешения автора.