
In
computer programming, foreach loop (or for each loop) is a
control flow statement for traversing items in a
collection
Collection or Collections may refer to:
* Cash collection, the function of an accounts receivable department
* Collection (church), money donated by the congregation during a church service
* Collection agency, agency to collect cash
* Collectio ...
. 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 languages, an
iterator, 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 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 languages which support foreach loops include
ABC
ABC are the first three letters of the Latin script known as the alphabet.
ABC or abc may also refer to:
Arts, entertainment, and media Broadcasting
* American Broadcasting Company, a commercial U.S. TV broadcaster
** Disney–ABC Television ...
,
ActionScript,
Ada
Ada may refer to:
Places
Africa
* Ada Foah, a town in Ghana
* Ada (Ghana parliament constituency)
* Ada, Osun, a town in Nigeria
Asia
* Ada, Urmia, a village in West Azerbaijan Province, Iran
* Ada, Karaman, a village in Karaman Province, Tur ...
,
C++11,
C#,
ColdFusion Markup Language (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 oracle ...
,
ECMAScript,
Erlang,
Java (since 1.5),
JavaScript,
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 (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,
PHP,
Prolog,
Python,
R,
REALbasic,
Rebol,
Red,
Ruby,
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 Alan Ka ...
,
Swift,
Tcl
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
**TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited, a ...
,
tcsh,
Unix shells,
Visual Basic .NET, and
Windows PowerShell. Notable languages without foreach are
C, and
C++ pre-C++11.
ActionScript 3.0
ActionScript 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
Ada may refer to:
Places
Africa
* Ada Foah, a town in Ghana
* Ada (Ghana parliament constituency)
* Ada, Osun, a town in Nigeria
Asia
* Ada, Urmia, a village in West Azerbaijan Province, Iran
* Ada, Karaman, a village in Karaman Province, Tur ...
supports foreach loops as part of the normal
for loop. Say X is an
array:
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(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
Language Integrated Query (LINQ, pronounced "link") is a Microsoft .NET Framework component that adds native data querying capabilities to .NET languages, originally released as a major part of .NET Framework 3.5 in 2007.
LINQ extends the langua ...
(LINQ) provides the following syntax, accepting a
delegate or
lambda expression:
myArray.ToList().ForEach(x => Console.WriteLine(x));
C++
C++11 provides a foreach loop. The syntax is similar to that of
Java:
#include
int main()
C++11 range-based for statements have been implemented in
GNU Compiler Collection (GCC) (since version 4.6),
Clang (since version 3.0) and
Visual C++ 2012 (version 11 )
The range-based
for
is
syntactic sugar 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 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
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 o ...
function(v));
// or
for (v in ,2,3,4,5
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 o ...
// 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 fro ...
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 oracle ...
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, M ...
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) or
some
(effecting
existential quantification).
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 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 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, a foreach-construct was introduced in
Java Development Kit (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
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 scripting o ...
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 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, optimizat ...
, 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 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 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
is a Japanese professional wrestler. She is signed to WWE, where she performs on the NXT brand under the ring name Sarray.
She was trained by Kyoko Inoue and made her debut in April 2011 at the age of 15 where she wrestled under the ring name S ...
// Any container class can be substituted
for(id obj in a)
NSArrays can also broadcast a message to their members:
NSArray *a = SArray new
is a Japanese professional wrestler. She is signed to WWE, where she performs on the NXT brand under the ring name Sarray.
She was trained by Kyoko Inoue and made her debut in April 2011 at the age of 15 where she wrestled under the ring name S ...
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 programming language, general-purpose, multi-paradigm programming language which extends the Caml dialect of ML (programming language), ML with object-oriented programming, object-oriented ...
is a functional language. 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
The semicolon or semi-colon is a symbol commonly used as orthography, orthographic punctuation. In the English language, a semicolon is most commonly used to link (in a single sentence) two independent clauses that are closely related in thou ...
;
or in short way:
List.iter print_int ;2;3;4
The semicolon or semi-colon is a symbol commonly used as orthography, orthographic punctuation. In the English language, a semicolon is most commonly used to link (in a single sentence) two independent clauses that are closely related in thou ...
;
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
Pascal, Pascal's or PASCAL may refer to:
People and fictional characters
* Pascal (given name), including a list of people with the name
* Pascal (surname), including a list of people and fictional characters with the name
** Blaise Pascal, Fren ...
, 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, ''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 arrays:
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 Tem or TEM may refer to:
Acronyms
* Threat and error management, an aviation safety management model.
* Telecom Expense Management
* Network equipment provider, Telecom Equipment Manufacturer
* TEM (currency), local to Volos, Greece
* TEM (nucle ...
(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 and the loop body is executed; if it returns None
, the loop is terminated.
let mut numbers = vec!, 2, 3
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 o ...
// 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
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 ...
:
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 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 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
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
**TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited, a ...
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
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
* For loop
* While loop
* Map (higher-order function)
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
Pascal, Pascal's or PASCAL may refer to:
People and fictional characters
* Pascal (given name), including a list of people with the name
* Pascal (surname), including a list of people and fictional characters with the name
** Blaise Pascal, Fren ...
, 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, ''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 arrays:
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 Tem or TEM may refer to:
Acronyms
* Threat and error management, an aviation safety management model.
* Telecom Expense Management
* Network equipment provider, Telecom Equipment Manufacturer
* TEM (currency), local to Volos, Greece
* TEM (nucle ...
(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 and the loop body is executed; if it returns None
, the loop is terminated.
let mut numbers = vec!, 2, 3
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 o ...
// 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
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 ...
:
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 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 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
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
**TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited, a ...
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
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
* For loop
* While loop
* Map (higher-order function)
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
Pascal, Pascal's or PASCAL may refer to:
People and fictional characters
* Pascal (given name), including a list of people with the name
* Pascal (surname), including a list of people and fictional characters with the name
** Blaise Pascal, Fren ...
, 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, ''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 arrays:
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 Tem or TEM may refer to:
Acronyms
* Threat and error management, an aviation safety management model.
* Telecom Expense Management
* Network equipment provider, Telecom Equipment Manufacturer
* TEM (currency), local to Volos, Greece
* TEM (nucle ...
(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 and the loop body is executed; if it returns None
, the loop is terminated.
let mut numbers = vec!, 2, 3
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 o ...
// 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
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 ...
:
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 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 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
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
**TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited, a ...
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
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
* For loop
* While loop
* Map (higher-order function)
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:Цикл просмотра