Цикл for-in
Цикл for-in перебирает элементы коллекции
и последовательно выполняет для каждого из них
заданный блок кода. В первом параметре мы указываем
переменную, в которую на каждой итерации попадает
очередной элемент коллекции, а во втором - саму
коллекцию: список, множество, строку или любую
другую сущность, реализующую интерфейс Iterable.
Цикл автоматически останавливается, когда элементы
коллекции заканчиваются.
Синтаксис
for (var element in collection) {
// тело цикла
}
Пример
Давайте переберем список и выведем каждый его элемент в консоль:
void main()
{
List<String> list = ['a', 'b', 'c', 'd', 'e'];
for (var el in list) {
print(el);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте переберем список чисел и посчитаем их сумму:
void main()
{
List<int> list = [1, 2, 3, 4, 5];
int res = 0;
for (var el in list) {
res += el;
}
print(res);
}
Результат выполнения кода:
15
Пример
Цикл for-in умеет перебирать не только
списки, но и строки. Давайте выведем каждый
символ строки отдельно:
void main()
{
String str = 'abcde';
for (var el in str.split('')) {
print(el);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
При переборе можно получить и индекс элемента.
Для этого нужно использовать метод indexed,
который возвращает пары индекс-значение:
void main()
{
List<String> list = ['a', 'b', 'c', 'd', 'e'];
for (var entry in list.indexed) {
print('${entry.$1}: ${entry.$2}');
}
}
Результат выполнения кода:
"0: a"
"1: b"
"2: c"
"3: d"
"4: e"
Пример
Внутри цикла for-in можно использовать
оператор break для досрочного выхода
и оператор continue для пропуска текущей
итерации. Давайте прервем перебор на элементе
c:
void main()
{
List<String> list = ['a', 'b', 'c', 'd', 'e'];
for (var el in list) {
if (el == 'c') {
break;
}
print(el);
}
}
Результат выполнения кода:
"a"
"b"