Цикл foreach![]() Цикл foreach — це оператор для обходу елементів у колекції.
Синтаксис оператора для кожного елемента колекції:
набір дій, які для поточнного елемента треба виконати
Мови програмування, котрі підтримують оператор Цикл foreach у різних мовахActionScript 3.0
ActionScript підтримує стандарт ECMAScript 4.0[5] для var foo:Object = {
"apple":1,
"orange":2
};
for each (var value:int in foo) {
trace(value);
}
// returns "1" then "2"
ActionScript підтримує також for (var key:String in foo) {
trace(key);
}
// повертає спочатку "apple" , потім "orange"
AdaAda підтримує конструкцію foreach як частину циклу for. Нехай, X — це масив: for I in X'Range loop
X (I) := Get_Next_Element;
end loop;
Цей синтаксис використовується переважно для масивів, але також буде працювати з іншими типами, коли потрібен повний обхід. Ada 2012 має узагальнені цикли для повного обходу контейнерів будь-якого типу (масив, списки, карти…): for Obj of X loop
-- Work on Obj
end loop;
CМова C не має колекцій або конструкції foreach. Однак вона має кілька стандартних структур даних, які можна використовувати як колекції, а foreach можна легко створити за допомогою макроса. Однак виникають дві очевидні проблеми:
Приклад коду на С, що працює як foreach: #include <stdio.h>
/* foreach macro viewing a string as a collection of char values */
#define foreach(ptrvar, strvar) \
char* ptrvar; \
for (ptrvar = strvar; (*ptrvar) != '\0'; *ptrvar++)
int main(int argc, char** argv) {
char* s1 = "abcdefg";
char* s2 = "123456789";
foreach (p1, s1) {
printf("loop 1: %c\n", *p1);
}
foreach (p2, s2) {
printf("loop 2: %c\n", *p2);
}
return 0;
}
C#У C#, припускаючи, що myArray є масивом цілих чисел: foreach (int x in myArray) { Console.WriteLine(x); }
C++C++11 підтримує цикл foreach. Синтаксис схожий до мови Java: #include <iostream>
int main()
{
int myint[] = {1, 2, 3, 4, 5};
for (int i : myint)
{
std::cout << i << '\n';
}
}
JavaУ Java конструкція foreach з'явилася в Java Development Kit (JDK) 1.5.0[8] . Офіційні джерела використовують для конструкції кілька назв. Її називають «розширеним циклом for» (англ. Enhanced for Loop)[8], «циклом For-Each»[9] і «оператором foreach»[10]. for (Type item : iterableCollection) {
// Do something to item
}
JavaScript
Стандарт ECMAScript 6 має for (var item of array){
// Do stuff
}
Альтернативний функціональний стиль[11]: array.forEach(item => {
// Do stuff
})
Для невпорядкованої ітерації за ключами в об'єкті JavaScript має цикл for (var key in object) {
// Do stuff with object[key]
}
Щоб обмежити ітерацію власними властивостями об'єкта, за винятком тих, які успадковуються через ланцюжок прототипів, іноді корисно додати тест hasOwnProperty(), якщо його підтримує рушій JavaScript. for (var key in object) {
if (object.hasOwnProperty(key)) {
// Do stuff with object[key]
}
}
PHPУ мові програмування PHP конструкція foreach надає простий спосіб перебору масивів. foreach працює тільки з масивами та об'єктами, і генеруватиме помилку за спроби використання зі змінними інших типів або неініціалізованими змінними. Існує два види синтаксису: 1. З використанням лише значення: foreach ($set as $value) {
// Do something to $value;
}
2. З використанням ключа та значення: foreach ($set as $key => $value) {
echo "{$key} has a value of {$value}";
}
Pythonfor item in iterable_collection:
# Do something with item
Присвоєння кортежу Python, повністю доступне в його циклі foreach, також робить тривіальним перебір пар (ключ, значення) в асоціативних масивах[джерело?]: for key, value in some_dict.items(): # Direct iteration on a dict iterates on its keys
# Do stuff
Через те, що for i in range(len(seq)):
# Do something to seq[i]
Коректнішим для Python вважають використання функції for i, item in enumerate(seq):
# Do stuff with item
# Possibly assign it back to seq[i]
Примітки
|
Portal di Ensiklopedia Dunia