Цикл foreach
у D дозволяє зменшити потенційні помилки та поліпшити
читабельність коду при переборі елементів.
Для заданого масиву arr
типу int[]
є можливість перебрати всі його
елементи, використавши цикл foreach
:
foreach (int e; arr) {
writeln(e);
}
Перше поле у оголошенні foreach
- це змінна, яка використовується у
тілі циклу. Її тип обчислюється автоматично:
foreach (e; arr) {
// typeof(e) поверне int
writeln(e);
}
Друге поле повинно бути масивом, або спеціальним підтримуючим перебір об'єктом, який називається range (діапазон), про який буде розказано у наступному розділі.
Під час перебору елементи масиву або діапазону будуть скопійовані.
Це допустимо для основних типів, але може стати проблемою для великих
типів. Для запобігання копіювання або щоб мати можливість змінювати
оригінальні елементи, можна використовувати ref
:
foreach (ref e; arr) {
e = 10; // перезаписуємо оригінальне значення
}
foreach_reverse
Колекцію можна перебрати у зворотному порядку за допомогою
foreach_reverse
:
foreach_reverse (e; [1, 2, 3]) {
writeln(e);
}
// 3 2 1