
In
computer programming
Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
, foreach loop (or for each loop) is a
control flow
In computer science, control flow (or flow of control) is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an '' ...
statement for traversing items in a
collection. is usually used in place of a standard loop
statement. Unlike other loop constructs, however, loops usually maintain no explicit counter: they essentially say "do this to everything in this set", rather than "do this times". This avoids potential
off-by-one errors and makes code simpler to read. In
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
languages, an
iterator
In computer programming, an iterator is an object that enables a programmer to traverse a container, particularly lists. Various types of iterators are often provided via a container's interface. Though the interface and semantics of a given ite ...
, even if implicit, is often used as the means of traversal.
The statement in some languages has some defined order, processing each item in the collection from the first to the last.
The statement in many other languages, especially
array programming
In computer science, array programming refers to solutions which allow the application of operations to an entire set of values at once. Such solutions are commonly used in scientific and engineering settings.
Modern programming languages tha ...
languages, does not have any particular order. This simplifies
loop optimization in general and in particular allows
vector processing
In computing, a vector processor or array processor is a central processing unit (CPU) that implements an instruction set where its instructions are designed to operate efficiently and effectively on large one-dimensional arrays of data called ...
of items in the collection concurrently.
Syntax
Syntax varies among languages. Most use the simple word
for
, roughly as follows:
for each item in collection:
do something to item
Language support
Programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
s which support foreach loops include
ABC,
ActionScript
ActionScript is an object-oriented programming language originally developed by Macromedia Inc. (later acquired by Adobe). It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript (meani ...
,
Ada,
C++11
C++11 is a version of the ISO/ IEC 14882 standard for the C++ programming language. C++11 replaced the prior version of the C++ standard, called C++03, and was later replaced by C++14. The name follows the tradition of naming language versio ...
,
C#,
ColdFusion Markup Language
ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine. Multiple commercial and open source implementations of CFML engines are availab ...
(CFML),
Cobra,
D,
Daplex (query language),
Delphi
Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracl ...
,
ECMAScript
ECMAScript (; ES) is a JavaScript standard intended to ensure the interoperability of web pages across different browsers. It is standardized by Ecma International in the documenECMA-262
ECMAScript is commonly used for client-side scriptin ...
,
Erlang,
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
(since 1.5),
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
,
Lua
Lua or LUA may refer to:
Science and technology
* Lua (programming language)
* Latvia University of Agriculture
* Last universal ancestor, in evolution
Ethnicity and language
* Lua people, of Laos
* Lawa people, of Thailand sometimes referred t ...
,
Objective-C
Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its N ...
(since 2.0),
ParaSail
Parasailing, also known as parascending, paraskiing or parakiting, is a recreational kiting activity where a person is towed behind a vehicle while attached to a specially designed canopy wing that resembles a parachute, known as a parasail w ...
,
Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
,
PHP
PHP is a General-purpose programming language, general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementati ...
,
Prolog
Prolog is a logic programming language associated with artificial intelligence and computational linguistics.
Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily a ...
,
Python,
R,
REALbasic,
Rebol,
Red
Red is the color at the long wavelength end of the visible spectrum of light, next to orange and opposite violet. It has a dominant wavelength of approximately 625–740 nanometres. It is a primary color in the RGB color model and a seconda ...
,
Ruby
A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum (aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapp ...
,
Scala,
Smalltalk
Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by ...
,
Swift
Swift or SWIFT most commonly refers to:
* SWIFT, an international organization facilitating transactions between banks
** SWIFT code
* Swift (programming language)
* Swift (bird), a family of birds
It may also refer to:
Organizations
* SWIFT ...
,
Tcl,
tcsh
tcsh ( “tee-see-shell”, “tee-shell”, or as “tee see ess aitch”, tcsh) is a Unix shell based on and backward compatible with the C shell (csh).
Shell
It is essentially the C shell with programmable command-line completion, comman ...
,
Unix shell
A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating system t ...
s,
Visual Basic .NET, and
Windows PowerShell
PowerShell is a task automation and configuration management program from Microsoft, consisting of a command-line shell and the associated scripting language. Initially a Windows component only, known as Windows PowerShell, it was made open-s ...
. Notable languages without foreach are
C, and
C++ pre-C++11.
ActionScript 3.0
ActionScript
ActionScript is an object-oriented programming language originally developed by Macromedia Inc. (later acquired by Adobe). It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript (meani ...
supports the ECMAScript 4.0 Standard for
for each .. in
which pulls the value at each index.
var foo:Object = ;
for each (var value:int in foo)
// returns "1" then "2"
It also supports
for .. in
which pulls the key at each index.
for (var key:String in foo)
// returns "apple" then "orange"
Ada
Ada supports foreach loops as part of the normal
for loop
In computer science a for-loop or for loop is a control flow statement for specifying iteration. Specifically, a for loop functions by running a section of code repeatedly until a certain condition has been satisfied.
For-loops have two par ...
. Say X is an
array
An array is a systematic arrangement of similar objects, usually in rows and columns.
Things called an array include:
{{TOC right
Music
* In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
:
for I in X'Range loop
X (I) := Get_Next_Element;
end loop;
This syntax is used on mostly arrays, but will also work with other types when a full iteration is needed.
Ada 2012 has generalized loops to foreach loops on any kind of container (array, lists, maps...):
for Obj of X loop
-- Work on Obj
end loop;
C
The
C language does not have collections or a foreach construct. However, it has several standard data structures that can be used as collections, and foreach can be made easily with a
macro
Macro (or MACRO) may refer to:
Science and technology
* Macroscopic, subjects visible to the eye
* Macro photography, a type of close-up photography
* Image macro, a picture with text superimposed
* Monopole, Astrophysics and Cosmic Ray Observat ...
.
However, two obvious problems occur:
* The macro is unhygienic: it declares a new variable in the existing scope which remains after the loop.
* One foreach macro cannot be defined that works with different collection types (e.g., array and linked list) or that is extensible to user types.
C string as a collection of char
#include
/* 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)
C int array as a collection of int (array size known at compile-time)
#include
/* foreach macro viewing an array of int values as a collection of int values */
#define foreach(intpvar, intarr) \
int* intpvar; \
for (intpvar = intarr; intpvar < (intarr + (sizeof(intarr)/sizeof(intarr )); ++intpvar)
int main(int argc, char** argv)
Most general: string or array as collection (collection size known at run-time)
: ''Note: can be removed and
typeof
typeof, alternately also typeOf, and TypeOf, is an operator provided by several programming languages to determine the data type of a variable. This is useful when constructing programs that must accept multiple types of data without explicitly sp ...
(col
used in its place with
GCC''
#include
#include
/* foreach macro viewing an array of given type as a collection of values of given type */
#define arraylen(arr) (sizeof(arr)/sizeof(arr )
#define foreach(idxtype, idxpvar, col, colsiz) \
idxtype* idxpvar; \
for (idxpvar = col; idxpvar < (col + colsiz); ++idxpvar)
int main(int argc, char** argv)
C#
In
C#, assuming that myArray is an array of integers:
foreach (int x in myArray)
Language Integrated Query (LINQ) provides the following syntax, accepting a
delegate or
lambda expression:
myArray.ToList().ForEach(x => Console.WriteLine(x));
C++
C++11
C++11 is a version of the ISO/ IEC 14882 standard for the C++ programming language. C++11 replaced the prior version of the C++ standard, called C++03, and was later replaced by C++14. The name follows the tradition of naming language versio ...
provides a foreach loop. The syntax is similar to that of
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
:
#include
int main()
C++11 range-based for statements have been implemented in
GNU Compiler Collection
The GNU Compiler Collection (GCC) is an optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free sof ...
(GCC) (since version 4.6),
Clang
Clang is a compiler front end for the C, C++, Objective-C, and Objective-C++ programming languages, as well as the OpenMP, OpenCL, RenderScript, CUDA, and HIP frameworks. It acts as a drop-in replacement for the GNU Compiler Collection ...
(since version 3.0) and
Visual C++
Microsoft Visual C++ (MSVC) is a compiler for the C, C++ and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both tr ...
2012 (version 11 )
The range-based
for
is
syntactic sugar
In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language "sweeter" for human use: things can be expressed more clearly, more concisely, or in a ...
equivalent to:
for (auto __anon = begin(myint); __anon != end(myint); ++__anon)
The compiler uses
argument-dependent lookup to resolve the
begin
and
end
functions.
The C++ Standard Library also supports
for_each
, that applies each element to a function, which can be any predefined function or a lambda expression. While range-based for is only from the beginning to the end, the range and direction you can change the direction or range by altering the first two parameters.
#include
#include // contains std::for_each
#include
int main()
Qt, a C++ framework, offers a macro providing foreach loops using the STL iterator interface:
#include
#include
int main()
Boost
Boost, boosted or boosting may refer to:
Science, technology and mathematics
* Boost, positive manifold pressure in turbocharged engines
* Boost (C++ libraries), a set of free peer-reviewed portable C++ libraries
* Boost (material), a material b ...
, a set of free peer-reviewed portable C++ libraries also provides foreach loops:
#include
#include
int main()
C++/CLI
The
C++/CLI
C++/CLI is a variant of the C++ programming language, modified for Common Language Infrastructure. It has been part of Visual Studio 2005 and later, and provides interoperability with other .NET languages such as C#. Microsoft created C++/CLI ...
language proposes a construct similar to C#.
Assuming that myArray is an array of integers:
for each (int x in myArray)
ColdFusion Markup Language (CFML)
Script syntax
// arrays
arrayeach( ,2,3,4,5 function(v));
// or
for (v in ,2,3,4,5
// or
// (Railo only; not supported in ColdFusion)
letters = a","b","c","d","e"
letters.each(function(v));
// structs
for (k in collection)
// or
structEach(collection, function(k,v));
// or
// (Railo only; not supported in ColdFusion)
collection.each(function(k,v));
Tag syntax
a','b','c','d','e'">
#v#
CFML incorrectly identifies the value as "index" in this construct; the
index
variable does receive the actual value of the array element, not its index.
#collection
Common Lisp
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ''ANSI INCITS 226-1994 (S20018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived fr ...
provides foreach ability either with the ''dolist'' macro:
(dolist (i '(1 3 5 6 8 10 14 17))
(print i))
or the powerful ''loop'' macro to iterate on more data types
(loop for i in '(1 3 5 6 8 10 14 17)
do (print i))
and even with the ''mapcar'' function:
(mapcar #'print '(1 3 5 6 8 10 14 17))
D
foreach(item; set)
or
foreach(argument)
Dart
for (final element in someCollection)
Object Pascal, Delphi
Foreach support was added in
Delphi
Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracl ...
2005, and uses an enumerator variable that must be declared in the ''var'' section.
for enumerator in collection do
begin
//do something here
end;
Eiffel
The iteration (foreach) form of the
Eiffel
Eiffel may refer to:
Places
* Eiffel Peak, a summit in Alberta, Canada
* Champ de Mars – Tour Eiffel station, Paris, France; a transit station
Structures
* Eiffel Tower, in Paris, France, designed by Gustave Eiffel
* Eiffel Bridge, Ungheni, ...
loop construct is introduced by the keyword
across
.
In this example, every element of the structure
my_list
is printed:
across my_list as ic loop print (ic.item) end
The local entity
ic
is an instance of the library class
ITERATION_CURSOR
. The cursor's feature
item
provides access to each structure element. Descendants of class
ITERATION_CURSOR
can be created to handle specialized iteration algorithms. The types of objects that can be iterated across (
my_list
in the example) are based on classes that inherit from the library class
ITERABLE
.
The iteration form of the Eiffel loop can also be used as a boolean expression when the keyword
loop
is replaced by either
all
(effecting
universal quantification
In mathematical logic, a universal quantification is a type of quantifier, a logical constant which is interpreted as "given any" or "for all". It expresses that a predicate can be satisfied by every member of a domain of discourse. In othe ...
) or
some
(effecting
existential quantification
In predicate logic, an existential quantification is a type of quantifier, a logical constant which is interpreted as "there exists", "there is at least one", or "for some". It is usually denoted by the logical operator symbol ∃, which, wh ...
).
This iteration is a boolean expression which is true if all items in
my_list
have counts greater than three:
across my_list as ic all ic.item.count > 3 end
The following is true if at least one item has a count greater than three:
across my_list as ic some ic.item.count > 3 end
Go
Go's foreach loop can be used to loop over an array, slice, string, map, or channel.
Using the two-value form, we get the index/key (first element) and the value (second element):
for index, value := range someCollection
Using the one-value form, we get the index/key (first element):
for index := range someCollection
Groovy
Groovy
''Groovy'' (or, less commonly, ''groovie'' or ''groovey'') is a slang colloquialism popular during the 1950s, '60s and '70s. It is roughly synonymous with words such as "excellent", "fashionable", or "amazing", depending on context.
History
The ...
supports ''for'' loops over collections like arrays, lists and ranges:
def x = ,2,3,4
The comma is a punctuation mark that appears in several variants in different languages. It has the same shape as an apostrophe or single closing quotation mark () in many typefaces, but it differs from them in being placed on the baseline ...
for (v in x) // loop over the 4-element array x
for (v in ,2,3,4
The comma is a punctuation mark that appears in several variants in different languages. It has the same shape as an apostrophe or single closing quotation mark () in many typefaces, but it differs from them in being placed on the baseline ...
// loop over 4-element literal list
for (v in 1..4) // loop over the range 1..4
Groovy also supports a C-style for loop with an array index:
for (i = 0; i < x.size(); i++)
Collections in Groovy can also be iterated over using the ''each'' keyword
and a closure. By default, the loop dummy is named ''it''
x.each // print every element of the x array
x.each // equivalent to line above, only loop dummy explicitly named "i"
Haskell
Haskell
Haskell () is a general-purpose, statically-typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research and industrial applications, Haskell has pioneered a number of programming lan ...
allows looping over lists with
monadic actions using
mapM_
and
forM_
(
mapM_
with its arguments flipped) fro
Control.Monad
It's also possible to generalize those functions to work on applicative functors rather than monads and any data structure that is traversable using
traverse
(
for
with its arguments flipped) and
mapM
(
forM
with its arguments flipped) fro
Haxe
for (value in iterable)
Lambda.iter(iterable, function(value) trace(value));
Java
In
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
, a foreach-construct was introduced in
Java Development Kit
The Java Development Kit (JDK) is a distribution of Java Technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java ...
(JDK) 1.5.0.
[
"Enhanced for Loop - This new language construct ..
]
Official sources use several names for the construct. It is referred to as the "Enhanced for Loop",
the "For-Each Loop", and the "foreach statement".
for (Type item : iterableCollection)
Java also provides the stream api since java 8:
List intList = List.of(1, 2, 3, 4);
intList.stream().forEach(i -> System.out.println(i));
JavaScript
The
ECMAScript 6 standard has
for..of
/code> for index-less iteration over generators, arrays and more:
for (var item of array)
Alternatively, function-based style:
array.forEach(item => )
For unordered iteration over the keys in an Object, JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
features the for...in
loop:
for (var key in object)
To limit the iteration to the object's own properties, excluding those inherited through the prototype chain, it is sometimes useful to add a hasOwnProperty() test, if supported by the JavaScript engine (for WebKit/Safari, this means "in version 3 or later").
for (var key in object)
ECMAScript 5 provided Object.keys method, to transfer the own keys of an object into array.
var book = ;
for(var key of Object.keys(book))
Lua
Iterate only through numerical index values:
for index, value in ipairs(array) do
-- do something
end
Iterate through all index values:
for index, value in pairs(array) do
-- do something
end
Mathematica
In Mathematica
Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, data manipulation, network analysis, time series analysis, NLP, optimi ...
, Do
will simply evaluate an expression for each element of a list, without returning any value.
In[]:= Do[doSomethingWithItem, ]
It is more common to use Table
, which returns the result of each evaluation in a new list.
In[]:= list = ;
In[]:= Table[item^2, ]
Out[]=
MATLAB
for item = array
%do something
end
Mint
For each loops are supported in Mint, possessing the following syntax:
for each element of list
/* 'Do something.' */
end
The for (;;)
or while (true)
infinite loop
In computer programming, an infinite loop (or endless loop) is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs ("pull the plug"). It may be intentional.
Overview
This differs from:
* ...
in Mint can be written using a for each loop and an infinitely long list.
import type
/* 'This function is mapped to'
* 'each index number i of the'
* 'infinitely long list.'
*/
sub identity(x)
return x
end
/* 'The following creates the list'
* ' , 1, 2, 3, 4, 5, ..., infinity
*/
infiniteList = list(identity)
for each element of infiniteList
/* 'Do something forever.' */
end
Objective-C
Foreach loops, called Fast enumeration, are supported starting in Objective-C
Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language. Originally developed by Brad Cox and Tom Love in the early 1980s, it was selected by NeXT for its N ...
2.0. They can be used to iterate over any object that implements the NSFastEnumeration protocol, including NSArray, NSDictionary (iterates over keys), NSSet, etc.
NSArray *a = SArray new // Any container class can be substituted
for(id obj in a)
NSArrays can also broadcast a message to their members:
NSArray *a = SArray new
makeObjectsPerformSelector:@selector(printDescription)
Where blocks are available, an NSArray can automatically perform a block on every contained item:
yArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
The type of collection being iterated will dictate the item returned with each iteration.
For example:
NSDictionary *d = SDictionary new
for(id key in d)
OCaml
OCaml
OCaml ( , formerly Objective Caml) is a general-purpose, multi-paradigm programming language which extends the Caml dialect of ML with object-oriented features. OCaml was created in 1996 by Xavier Leroy, Jérôme Vouillon, Damien Doligez, D ...
is a functional language
In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that ...
. Thus, the equivalent of a foreach loop can be achieved as a library function over lists and arrays.
For lists:
List.iter (fun x -> print_int x) ;2;3;4;
or in short way:
List.iter print_int ;2;3;4;
For arrays:
Array.iter (fun x -> print_int x)
or in short way:
Array.iter print_int 1;2;3;4, ;
ParaSail
The ParaSail
Parasailing, also known as parascending, paraskiing or parakiting, is a recreational kiting activity where a person is towed behind a vehicle while attached to a specially designed canopy wing that resembles a parachute, known as a parasail w ...
parallel programming language supports several kinds of iterators, including a general "for each" iterator over a container:
var Con : Container := ...
// ...
for each Elem of Con concurrent loop // loop may also be "forward" or "reverse" or unordered (the default)
// ... do something with Elem
end loop
ParaSail also supports filters on iterators, and the ability to refer to both the key and the value of a map. Here is a forward iteration over the elements of "My_Map" selecting only elements where the keys are in "My_Set":
var My_Map : Map Univ_String, Value_Type => Tree> := ...
const My_Set : Set := abc", "def", "ghi"
for each Tr">tr => Trof My_Map forward loop
// ... do something with Str or Tr
end loop
Pascal
In Pascal, ISO standard 10206:1990 introduced iteration over set types, thus:
var
elt: ElementType;
eltset: set of ElementType;
for elt in eltset do
Perl
In Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
, ''foreach'' (which is equivalent to the shorter for) can be used to traverse elements of a list. The expression which denotes the collection to loop over is evaluated in list-context and each item of the resulting list is, in turn, aliased to the loop variable.
List literal example:
foreach (1, 2, 3, 4)
Array examples:
foreach (@arr)
foreach $x (@arr)
Hash example:
foreach $x (keys %hash)
Direct modification of collection members:
@arr = ( 'remove-foo', 'remove-bar' );
foreach $x (@arr)
# Now @arr = ('foo', 'bar');
PHP
foreach ($set as $value)
It is also possible to extract both keys and values using the alternate syntax:
foreach ($set as $key => $value)
Direct modification of collection members:
$arr = array(1, 2, 3);
foreach ($arr as &$value)
// Now $arr = array(2, 3, 4);
// also works with the full syntax
foreach ($arr as $key => &$value)
More information
Python
for item in iterable_collection:
# Do something with item
Python's tuple assignment, fully available in its foreach loop, also makes it trivial to iterate on (key, value) pairs in associative array
In computer science, an associative array, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In mathematical terms an ...
s:
for key, value in some_dict.items(): # Direct iteration on a dict iterates on its keys
# Do stuff
As for ... in
is the only kind of for loop in Python, the equivalent to the "counter" loop found in other languages is...
for i in range(len(seq)):
# Do something to seq
... though using the enumerate
function is considered more "Pythonic":
for i, item in enumerate(seq):
# Do stuff with item
# Possibly assign it back to seq
R
for (item in object)
As for ... in
is the only kind of for
loop in R, the equivalent to the "counter" loop found in other languages is...
for (i in seq_along(object))
Racket
(for ( tem set
(do-something-with item))
or using the conventional Scheme for-each
function:
(for-each do-something-with a-list)
do-something-with
is a one-argument function.
Raku
In Raku, a sister language to Perl, ''for'' must be used to traverse elements of a list (''foreach'' is not allowed). The expression which denotes the collection to loop over is evaluated in list-context, but not flattened by default, and each item of the resulting list is, in turn, aliased to the loop variable(s).
List literal example:
for 1..4
Array examples:
for @arr
The for loop in its statement modifier form:
.say for @arr;
for @arr -> $x
for @arr -> $x, $y
Hash example:
for keys %hash -> $key
or
for %hash.kv -> $key, $value
or
for %hash -> $x
Direct modification of collection members with a doubly pointy block, ''<->'':
my @arr = 1,2,3;
for @arr <-> $x
# Now @arr = 2,4,6;
Ruby
set.each do , item,
# do something to item
end
or
for item in set
# do something to item
end
This can also be used with a hash.
set.each do , item,value,
# do something to item
# do something to value
end
Rust
The for
loop has the structure for in
. It implicitly calls th
IntoIterator::into_iter
method on the expression, and uses the resulting value, which must implement th
trait. If the expression is itself an iterator, it is used directly by the for
loop through a
that returns the iterator unchanged. The loop calls the Iterator::next
method on the iterator before executing the loop body. If Iterator::next
returns Some(_)
, the value inside is assigned to the pattern
A pattern is a regularity in the world, in human-made design, or in abstract ideas. As such, the elements of a pattern repeat in a predictable manner. A geometric pattern is a kind of pattern formed of geometric shapes and typically repeated li ...
and the loop body is executed; if it returns None
, the loop is terminated.
let mut numbers = vec! , 2, 3
// Immutable reference:
for number in &numbers
for square in numbers.iter().map(, x, x * x)
// Mutable reference:
for number in &mut numbers
// prints " , 4, 6:
println!("", numbers);
// Consumes the Vec and creates an Iterator:
for number in numbers
// Errors with "borrow of moved value":
// println!("", numbers);
Scala
// return list of modified elements
items map
items map multiplyByTwo
for yield doSomething(x)
for yield multiplyByTwo(x)
// return nothing, just perform action
items foreach
items foreach println
for doSomething(x)
for println(x)
// pattern matching example in for-comprehension
for ((key, value) <- someMap) println(s"$key -> $value")
Scheme
(for-each do-something-with a-list)
do-something-with
is a one-argument function.
Smalltalk
collection do: "do something to item"
Swift
Swift
Swift or SWIFT most commonly refers to:
* SWIFT, an international organization facilitating transactions between banks
** SWIFT code
* Swift (programming language)
* Swift (bird), a family of birds
It may also refer to:
Organizations
* SWIFT ...
uses the for
…in
construct to iterate over members of a collection.
for thing in someCollection
The for
…in
loop is often used with the closed and half-open range constructs to iterate over the loop body a certain number of times.
for i in 0..<10
for i in 0...10
SystemVerilog
SystemVerilog
SystemVerilog, standardized as IEEE 1800, is a hardware description and hardware verification language used to model, design, simulate, test and implement electronic systems. SystemVerilog is based on Verilog and some extensions, and since 20 ...
supports iteration over any vector or array type of any dimensionality using the foreach
keyword.
A trivial example iterates over an array of integers:
A more complex example iterates over an associative array of arrays of integers:
Tcl
Tcl uses foreach to iterate over lists. It is possible to specify more than one iterator variable, in which case they are assigned sequential values from the list.
It is also possible to iterate over more than one list simultaneously. In the following i
assumes sequential values of the first list, j
sequential values of the second list:
Visual Basic .NET
For Each item In enumerable
' Do something with item.
Next
or without type inference
Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics. ...
For Each item As type In enumerable
' Do something with item.
Next
Windows
Conventional command processor
Invoke a hypothetical frob
command three times, giving it a color name each time.
C:\>FOR %%a IN ( red green blue ) DO frob %%a
Windows PowerShell
foreach ($item in $set)
From a pipeline
$list , ForEach-Object
# or using the aliases
$list , foreach
$list , %
XSLT
See also
* Do while loop
In most computer programming languages a do while loop is a control flow statement that executes a block of code and then either repeats the block or exits the loop depending on a given boolean condition.
The ''do while'' construct consists of ...
* For loop
In computer science a for-loop or for loop is a control flow statement for specifying iteration. Specifically, a for loop functions by running a section of code repeatedly until a certain condition has been satisfied.
For-loops have two par ...
* While loop
In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The ''while'' loop can be thought of as a repeating if statement.
Overview
The '' ...
* Map (higher-order function)
In many programming languages, map is the name of a higher-order function that applies a given function to each element of a collection, e.g. a list or set, returning the results in a collection of the same type. It is often called ''apply ...
References
{{Reflist, 2
Articles with example Ada code
Articles with example Perl code
Articles with example PHP code
Articles with example Python (programming language) code
Articles with example Racket code
Articles with example Smalltalk code
Articles with example Tcl code
Control flow
Programming language comparisons
Articles with example Java code
Articles with example Haskell code
ru:Цикл просмотра>1;2;3;4, ;
or in short way:
Array.iter print_int
or in short way:
Array.iter print_int 1;2;3;4, ;
ParaSail
The ParaSail
Parasailing, also known as parascending, paraskiing or parakiting, is a recreational kiting activity where a person is towed behind a vehicle while attached to a specially designed canopy wing that resembles a parachute, known as a parasail w ...
parallel programming language supports several kinds of iterators, including a general "for each" iterator over a container:
var Con : Container := ...
// ...
for each Elem of Con concurrent loop // loop may also be "forward" or "reverse" or unordered (the default)
// ... do something with Elem
end loop
ParaSail also supports filters on iterators, and the ability to refer to both the key and the value of a map. Here is a forward iteration over the elements of "My_Map" selecting only elements where the keys are in "My_Set":
var My_Map : Map Univ_String, Value_Type => Tree> := ...
const My_Set : Set := abc", "def", "ghi"
for each Tr">tr => Trof My_Map forward loop
// ... do something with Str or Tr
end loop
Pascal
In Pascal, ISO standard 10206:1990 introduced iteration over set types, thus:
var
elt: ElementType;
eltset: set of ElementType;
for elt in eltset do
Perl
In Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
, ''foreach'' (which is equivalent to the shorter for) can be used to traverse elements of a list. The expression which denotes the collection to loop over is evaluated in list-context and each item of the resulting list is, in turn, aliased to the loop variable.
List literal example:
foreach (1, 2, 3, 4)
Array examples:
foreach (@arr)
foreach $x (@arr)
Hash example:
foreach $x (keys %hash)
Direct modification of collection members:
@arr = ( 'remove-foo', 'remove-bar' );
foreach $x (@arr)
# Now @arr = ('foo', 'bar');
PHP
foreach ($set as $value)
It is also possible to extract both keys and values using the alternate syntax:
foreach ($set as $key => $value)
Direct modification of collection members:
$arr = array(1, 2, 3);
foreach ($arr as &$value)
// Now $arr = array(2, 3, 4);
// also works with the full syntax
foreach ($arr as $key => &$value)
More information
Python
for item in iterable_collection:
# Do something with item
Python's tuple assignment, fully available in its foreach loop, also makes it trivial to iterate on (key, value) pairs in associative array
In computer science, an associative array, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In mathematical terms an ...
s:
for key, value in some_dict.items(): # Direct iteration on a dict iterates on its keys
# Do stuff
As for ... in
is the only kind of for loop in Python, the equivalent to the "counter" loop found in other languages is...
for i in range(len(seq)):
# Do something to seq
... though using the enumerate
function is considered more "Pythonic":
for i, item in enumerate(seq):
# Do stuff with item
# Possibly assign it back to seq
R
for (item in object)
As for ... in
is the only kind of for
loop in R, the equivalent to the "counter" loop found in other languages is...
for (i in seq_along(object))
Racket
(for ( tem set
(do-something-with item))
or using the conventional Scheme for-each
function:
(for-each do-something-with a-list)
do-something-with
is a one-argument function.
Raku
In Raku, a sister language to Perl, ''for'' must be used to traverse elements of a list (''foreach'' is not allowed). The expression which denotes the collection to loop over is evaluated in list-context, but not flattened by default, and each item of the resulting list is, in turn, aliased to the loop variable(s).
List literal example:
for 1..4
Array examples:
for @arr
The for loop in its statement modifier form:
.say for @arr;
for @arr -> $x
for @arr -> $x, $y
Hash example:
for keys %hash -> $key
or
for %hash.kv -> $key, $value
or
for %hash -> $x
Direct modification of collection members with a doubly pointy block, ''<->'':
my @arr = 1,2,3;
for @arr <-> $x
# Now @arr = 2,4,6;
Ruby
set.each do , item,
# do something to item
end
or
for item in set
# do something to item
end
This can also be used with a hash.
set.each do , item,value,
# do something to item
# do something to value
end
Rust
The for
loop has the structure for in
. It implicitly calls th
IntoIterator::into_iter
method on the expression, and uses the resulting value, which must implement th
trait. If the expression is itself an iterator, it is used directly by the for
loop through a
that returns the iterator unchanged. The loop calls the Iterator::next
method on the iterator before executing the loop body. If Iterator::next
returns Some(_)
, the value inside is assigned to the pattern
A pattern is a regularity in the world, in human-made design, or in abstract ideas. As such, the elements of a pattern repeat in a predictable manner. A geometric pattern is a kind of pattern formed of geometric shapes and typically repeated li ...
and the loop body is executed; if it returns None
, the loop is terminated.
let mut numbers = vec! , 2, 3
// Immutable reference:
for number in &numbers
for square in numbers.iter().map(, x, x * x)
// Mutable reference:
for number in &mut numbers
// prints " , 4, 6:
println!("", numbers);
// Consumes the Vec and creates an Iterator:
for number in numbers
// Errors with "borrow of moved value":
// println!("", numbers);
Scala
// return list of modified elements
items map
items map multiplyByTwo
for yield doSomething(x)
for yield multiplyByTwo(x)
// return nothing, just perform action
items foreach
items foreach println
for doSomething(x)
for println(x)
// pattern matching example in for-comprehension
for ((key, value) <- someMap) println(s"$key -> $value")
Scheme
(for-each do-something-with a-list)
do-something-with
is a one-argument function.
Smalltalk
collection do: "do something to item"
Swift
Swift
Swift or SWIFT most commonly refers to:
* SWIFT, an international organization facilitating transactions between banks
** SWIFT code
* Swift (programming language)
* Swift (bird), a family of birds
It may also refer to:
Organizations
* SWIFT ...
uses the for
…in
construct to iterate over members of a collection.
for thing in someCollection
The for
…in
loop is often used with the closed and half-open range constructs to iterate over the loop body a certain number of times.
for i in 0..<10
for i in 0...10
SystemVerilog
SystemVerilog
SystemVerilog, standardized as IEEE 1800, is a hardware description and hardware verification language used to model, design, simulate, test and implement electronic systems. SystemVerilog is based on Verilog and some extensions, and since 20 ...
supports iteration over any vector or array type of any dimensionality using the foreach
keyword.
A trivial example iterates over an array of integers:
A more complex example iterates over an associative array of arrays of integers:
Tcl
Tcl uses foreach to iterate over lists. It is possible to specify more than one iterator variable, in which case they are assigned sequential values from the list.
It is also possible to iterate over more than one list simultaneously. In the following i
assumes sequential values of the first list, j
sequential values of the second list:
Visual Basic .NET
For Each item In enumerable
' Do something with item.
Next
or without type inference
Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics. ...
For Each item As type In enumerable
' Do something with item.
Next
Windows
Conventional command processor
Invoke a hypothetical frob
command three times, giving it a color name each time.
C:\>FOR %%a IN ( red green blue ) DO frob %%a
Windows PowerShell
foreach ($item in $set)
From a pipeline
$list , ForEach-Object
# or using the aliases
$list , foreach
$list , %
XSLT
See also
* Do while loop
In most computer programming languages a do while loop is a control flow statement that executes a block of code and then either repeats the block or exits the loop depending on a given boolean condition.
The ''do while'' construct consists of ...
* For loop
In computer science a for-loop or for loop is a control flow statement for specifying iteration. Specifically, a for loop functions by running a section of code repeatedly until a certain condition has been satisfied.
For-loops have two par ...
* While loop
In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The ''while'' loop can be thought of as a repeating if statement.
Overview
The '' ...
* Map (higher-order function)
In many programming languages, map is the name of a higher-order function that applies a given function to each element of a collection, e.g. a list or set, returning the results in a collection of the same type. It is often called ''apply ...
References
{{Reflist, 2
Articles with example Ada code
Articles with example Perl code
Articles with example PHP code
Articles with example Python (programming language) code
Articles with example Racket code
Articles with example Smalltalk code
Articles with example Tcl code
Control flow
Programming language comparisons
Articles with example Java code
Articles with example Haskell code
ru:Цикл просмотра>1;2;3;4, ;
ParaSail
The ParaSail
Parasailing, also known as parascending, paraskiing or parakiting, is a recreational kiting activity where a person is towed behind a vehicle while attached to a specially designed canopy wing that resembles a parachute, known as a parasail w ...
parallel programming language supports several kinds of iterators, including a general "for each" iterator over a container:
var Con : Container := ...
// ...
for each Elem of Con concurrent loop // loop may also be "forward" or "reverse" or unordered (the default)
// ... do something with Elem
end loop
ParaSail also supports filters on iterators, and the ability to refer to both the key and the value of a map. Here is a forward iteration over the elements of "My_Map" selecting only elements where the keys are in "My_Set":
var My_Map : Map Univ_String, Value_Type => Tree> := ...
const My_Set : Set := abc", "def", "ghi"
for each Tr">tr => Trof My_Map forward loop
// ... do something with Str or Tr
end loop
Pascal
In Pascal, ISO standard 10206:1990 introduced iteration over set types, thus:
var
elt: ElementType;
eltset: set of ElementType;
for elt in eltset do
Perl
In Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
, ''foreach'' (which is equivalent to the shorter for) can be used to traverse elements of a list. The expression which denotes the collection to loop over is evaluated in list-context and each item of the resulting list is, in turn, aliased to the loop variable.
List literal example:
foreach (1, 2, 3, 4)
Array examples:
foreach (@arr)
foreach $x (@arr)
Hash example:
foreach $x (keys %hash)
Direct modification of collection members:
@arr = ( 'remove-foo', 'remove-bar' );
foreach $x (@arr)
# Now @arr = ('foo', 'bar');
PHP
foreach ($set as $value)
It is also possible to extract both keys and values using the alternate syntax:
foreach ($set as $key => $value)
Direct modification of collection members:
$arr = array(1, 2, 3);
foreach ($arr as &$value)
// Now $arr = array(2, 3, 4);
// also works with the full syntax
foreach ($arr as $key => &$value)
More information
Python
for item in iterable_collection:
# Do something with item
Python's tuple assignment, fully available in its foreach loop, also makes it trivial to iterate on (key, value) pairs in associative array
In computer science, an associative array, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In mathematical terms an ...
s:
for key, value in some_dict.items(): # Direct iteration on a dict iterates on its keys
# Do stuff
As for ... in
is the only kind of for loop in Python, the equivalent to the "counter" loop found in other languages is...
for i in range(len(seq)):
# Do something to seq
... though using the enumerate
function is considered more "Pythonic":
for i, item in enumerate(seq):
# Do stuff with item
# Possibly assign it back to seq
R
for (item in object)
As for ... in
is the only kind of for
loop in R, the equivalent to the "counter" loop found in other languages is...
for (i in seq_along(object))
Racket
(for ( tem set
(do-something-with item))
or using the conventional Scheme for-each
function:
(for-each do-something-with a-list)
do-something-with
is a one-argument function.
Raku
In Raku, a sister language to Perl, ''for'' must be used to traverse elements of a list (''foreach'' is not allowed). The expression which denotes the collection to loop over is evaluated in list-context, but not flattened by default, and each item of the resulting list is, in turn, aliased to the loop variable(s).
List literal example:
for 1..4
Array examples:
for @arr
The for loop in its statement modifier form:
.say for @arr;
for @arr -> $x
for @arr -> $x, $y
Hash example:
for keys %hash -> $key
or
for %hash.kv -> $key, $value
or
for %hash -> $x
Direct modification of collection members with a doubly pointy block, ''<->'':
my @arr = 1,2,3;
for @arr <-> $x
# Now @arr = 2,4,6;
Ruby
set.each do , item,
# do something to item
end
or
for item in set
# do something to item
end
This can also be used with a hash.
set.each do , item,value,
# do something to item
# do something to value
end
Rust
The for
loop has the structure for in
. It implicitly calls th
IntoIterator::into_iter
method on the expression, and uses the resulting value, which must implement th
trait. If the expression is itself an iterator, it is used directly by the for
loop through a
that returns the iterator unchanged. The loop calls the Iterator::next
method on the iterator before executing the loop body. If Iterator::next
returns Some(_)
, the value inside is assigned to the pattern
A pattern is a regularity in the world, in human-made design, or in abstract ideas. As such, the elements of a pattern repeat in a predictable manner. A geometric pattern is a kind of pattern formed of geometric shapes and typically repeated li ...
and the loop body is executed; if it returns None
, the loop is terminated.
let mut numbers = vec! , 2, 3
// Immutable reference:
for number in &numbers
for square in numbers.iter().map(, x, x * x)
// Mutable reference:
for number in &mut numbers
// prints " , 4, 6:
println!("", numbers);
// Consumes the Vec and creates an Iterator:
for number in numbers
// Errors with "borrow of moved value":
// println!("", numbers);
Scala
// return list of modified elements
items map
items map multiplyByTwo
for yield doSomething(x)
for yield multiplyByTwo(x)
// return nothing, just perform action
items foreach
items foreach println
for doSomething(x)
for println(x)
// pattern matching example in for-comprehension
for ((key, value) <- someMap) println(s"$key -> $value")
Scheme
(for-each do-something-with a-list)
do-something-with
is a one-argument function.
Smalltalk
collection do: "do something to item"
Swift
Swift
Swift or SWIFT most commonly refers to:
* SWIFT, an international organization facilitating transactions between banks
** SWIFT code
* Swift (programming language)
* Swift (bird), a family of birds
It may also refer to:
Organizations
* SWIFT ...
uses the for
…in
construct to iterate over members of a collection.
for thing in someCollection
The for
…in
loop is often used with the closed and half-open range constructs to iterate over the loop body a certain number of times.
for i in 0..<10
for i in 0...10
SystemVerilog
SystemVerilog
SystemVerilog, standardized as IEEE 1800, is a hardware description and hardware verification language used to model, design, simulate, test and implement electronic systems. SystemVerilog is based on Verilog and some extensions, and since 20 ...
supports iteration over any vector or array type of any dimensionality using the foreach
keyword.
A trivial example iterates over an array of integers:
A more complex example iterates over an associative array of arrays of integers:
Tcl
Tcl uses foreach to iterate over lists. It is possible to specify more than one iterator variable, in which case they are assigned sequential values from the list.
It is also possible to iterate over more than one list simultaneously. In the following i
assumes sequential values of the first list, j
sequential values of the second list:
Visual Basic .NET
For Each item In enumerable
' Do something with item.
Next
or without type inference
Type inference refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some branches of computer science and linguistics. ...
For Each item As type In enumerable
' Do something with item.
Next
Windows
Conventional command processor
Invoke a hypothetical frob
command three times, giving it a color name each time.
C:\>FOR %%a IN ( red green blue ) DO frob %%a
Windows PowerShell
foreach ($item in $set)
From a pipeline
$list , ForEach-Object
# or using the aliases
$list , foreach
$list , %
XSLT
See also
* Do while loop
In most computer programming languages a do while loop is a control flow statement that executes a block of code and then either repeats the block or exits the loop depending on a given boolean condition.
The ''do while'' construct consists of ...
* For loop
In computer science a for-loop or for loop is a control flow statement for specifying iteration. Specifically, a for loop functions by running a section of code repeatedly until a certain condition has been satisfied.
For-loops have two par ...
* While loop
In most computer programming languages, a while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The ''while'' loop can be thought of as a repeating if statement.
Overview
The '' ...
* Map (higher-order function)
In many programming languages, map is the name of a higher-order function that applies a given function to each element of a collection, e.g. a list or set, returning the results in a collection of the same type. It is often called ''apply ...
References
{{Reflist, 2
Articles with example Ada code
Articles with example Perl code
Articles with example PHP code
Articles with example Python (programming language) code
Articles with example Racket code
Articles with example Smalltalk code
Articles with example Tcl code
Control flow
Programming language comparisons
Articles with example Java code
Articles with example Haskell code
ru:Цикл просмотра