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 ''im ...
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 error
An off-by-one error or off-by-one bug (known by acronyms OBOE, OBO, OB1 and OBOB) is a logic error involving the discrete equivalent of a boundary condition. It often occurs in computer programming when an iterative loop iterates one time too m ...
s 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 p ...
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 iterat ...
, 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 computational science, scientific and engineering settings.
Modern progr ...
languages, does not have any particular order. This simplifies
loop optimization
In compiler theory, loop optimization is the process of increasing execution speed and reducing the overheads associated with loops. It plays an important role in improving cache performance and making effective use of parallel processing capabi ...
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 ...
s 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
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 (meaning ...
,
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, ...
,
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 versions b ...
,
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 Daplex is a computer language introduced in 1981 by David Shipman of the Computer Corporation of America. Daplex was designed for creating distributed database systems and can be used as a global query language
Query languages, data query languag ...
(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
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 ...
,
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 List ...
(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 NeXTS ...
(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, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offici ...
,
PHP
PHP is a 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 implementation is now produced by The PHP Group ...
,
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 ...
,
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
,
R,
REALbasic
The Xojo programming environment and programming language is developed and commercially marketed by Xojo, Inc. of Austin, Texas for software development targeting macOS, Microsoft Windows, Linux, iOS, the Web and Raspberry Pi. Xojo uses a propri ...
,
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 secondar ...
,
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 sa ...
,
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
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
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 ...
,
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, command-l ...
,
Unix shell
A Unix shell is a command-line Interpreter (computing), interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting langua ...
s,
Visual Basic .NET
Visual Basic, originally called Visual Basic .NET (VB.NET), is a multi-paradigm, object-oriented programming language, implemented on .NET, Mono, and the .NET Framework. Microsoft launched VB.NET in 2002 as the successor to its original Visua ...
, 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-sourc ...
. Notable languages without foreach are
C, and
C++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
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 (meaning ...
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, ...
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 part ...
. 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.
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 s ...
(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
Delegate or delegates may refer to:
* Delegate, New South Wales, a town in Australia
* Delegate (CLI), a computer programming technique
* Delegate (American politics), a representative in any of various political organizations
* Delegate (Unit ...
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 versions b ...
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 List ...
:
#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 software ...
(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 (GCC), ...
(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 tria ...
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 an ...
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, 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 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
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 other w ...
) 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, whe ...
).
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 List ...
, 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
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
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 ECMAScript is a JavaScript standard developed by Ecma International. Since 2015, major versions have been published every June.
ECMAScript 2022, the 13th and current version, was released in June 2022.
Versions
In June 2004, Ecma International p ...
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 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 NeXTS ...
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 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
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 m ...
. 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)
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: