[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki19\/2021\/01\/27\/foreach-schleife-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki19\/2021\/01\/27\/foreach-schleife-wikipedia\/","headline":"Foreach-Schleife – Wikipedia","name":"Foreach-Schleife – Wikipedia","description":"Kontrollflussanweisung F\u00fcr jede Schleife werden fast immer Elemente in einer Folge von Elementen durchlaufen. Foreach-Schleife (oder f\u00fcr jede Schleife) ist","datePublished":"2021-01-27","dateModified":"2021-01-27","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki19\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki19\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/1\/13\/For-Loop-Mint-Programming-Language-Type-2.gif\/220px-For-Loop-Mint-Programming-Language-Type-2.gif","url":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/1\/13\/For-Loop-Mint-Programming-Language-Type-2.gif\/220px-For-Loop-Mint-Programming-Language-Type-2.gif","height":"220","width":"220"},"url":"https:\/\/wiki.edu.vn\/wiki19\/2021\/01\/27\/foreach-schleife-wikipedia\/","wordCount":16441,"articleBody":"Kontrollflussanweisung F\u00fcr jede Schleife werden fast immer Elemente in einer Folge von Elementen durchlaufen. Foreach-Schleife (oder f\u00fcr jede Schleife) ist eine Kontrollflussanweisung zum Durchlaufen von Elementen in einer Sammlung. Foreach wird normalerweise anstelle eines Standards verwendet f\u00fcr Schleife Erkl\u00e4rung. Im Gegensatz zu anderen for-Schleifenkonstrukten jedoch foreach-Schleifen[1] In der Regel wird kein expliziter Z\u00e4hler beibehalten: Sie sagen im Wesentlichen “Tun Sie dies f\u00fcr alles in diesem Satz” und nicht “Tun Sie dies” x times “. Dies vermeidet m\u00f6gliche Fehler nacheinander und vereinfacht das Lesen von Code. In objektorientierten Sprachen wird h\u00e4ufig ein Iterator, auch wenn er implizit ist, als Mittel zum Durchlaufen verwendet.Das f\u00fcr jeden Die Anweisung in einigen Sprachen hat eine definierte Reihenfolge, in der jedes Element in der Sammlung vom ersten bis zum letzten verarbeitet wird. Das f\u00fcr jeden Anweisungen in vielen anderen Sprachen, insbesondere in Array-Programmiersprachen, haben keine bestimmte Reihenfolge. Dies vereinfacht die Schleifenoptimierung im Allgemeinen und erm\u00f6glicht im Besonderen die gleichzeitige Vektorverarbeitung von Elementen in der Sammlung. Die Syntax variiert zwischen den Sprachen. Die meisten benutzen das einfache Wort forungef\u00e4hr wie folgt:for each item in collection: do something to itemTable of ContentsSprachunterst\u00fctzung[edit]ActionScript 3.0[edit]Ada[edit]C.[edit]C #[edit]C ++[edit]C ++ \/ CLI[edit]ColdFusion Markup Language (CFML)[edit]Skriptsyntax[edit]Tag-Syntax[edit]Common Lisp[edit]D.[edit]Pfeil[edit]Objekt Pascal, Delphi[edit]Eiffel[edit]Gehen[edit]Groovy[edit]Haskell[edit]Haxe[edit]Java[edit]JavaScript[edit]Lua[17][edit]Mathematica[edit]MATLAB[edit]Minze[edit]Ziel c[edit]OCaml[edit]ParaSail[edit]Pascal[edit]Perl[edit]PHP[edit]Python[edit]Schl\u00e4ger[edit]Raku[edit]Rubin[edit]Rost[edit]Scala[edit]Planen[edit]Smalltalk[edit]Schnell[edit]SystemVerilog[edit]Tcl[edit]Visual Basic .NET[edit]Windows[edit]Herk\u00f6mmlicher Befehlsprozessor[edit]Windows PowerShell[edit]Extensible Stylesheet Language (XSL)[edit]Siehe auch[edit]Verweise[edit]Sprachunterst\u00fctzung[edit]Zu den Programmiersprachen, die jede Schleife unterst\u00fctzen, geh\u00f6ren ABC, ActionScript, Ada, C ++ 11, C #, CFML (ColdFusion Markup Language), Cobra, D, Daplex (Abfragesprache), Delphi, ECMAScript, Erlang, Java (seit 1.5), JavaScript , Lua, Objective-C (seit 2.0), ParaSail, Perl, PHP, Prolog,[2]Python, REALbasic, Ruby, Scala, Smalltalk, Swift, Tcl, tcsh, Unix-Shells, Visual Basic .NET und Windows PowerShell. Bemerkenswerte Sprachen ohne foreach sind C und C ++ vor C ++ 11.ActionScript 3.0[edit]ActionScript unterst\u00fctzt den ECMAScript 4.0-Standard[3] zum for each .. in[4] Dadurch wird der Wert an jedem Index abgerufen. var foo:Object = {\t\"apple\":1,\t\"orange\":2};for each (var value:int in foo) { \ttrace(value); }\/\/ returns \"1\" then \"2\"Es unterst\u00fctzt auch for .. in[5] das zieht den Schl\u00fcssel an jedem Index.for (var key:String in foo) { \ttrace(key); }\/\/ returns \"apple\" then \"orange\"Ada[edit]Ada unterst\u00fctzt foreach-Schleifen als Teil der normalen for-Schleife. Angenommen, X ist ein Array:for I in X'Range loop X (I) := Get_Next_Element;end loop;Diese Syntax wird haupts\u00e4chlich f\u00fcr Arrays verwendet, funktioniert jedoch auch mit anderen Typen, wenn eine vollst\u00e4ndige Iteration erforderlich ist.Ada 2012 hat Schleifen verallgemeinert, um Schleifen f\u00fcr jede Art von Container (Array, Listen, Karten …) zu finden:for Obj of X loop -- Work on Objend loop;C.[edit]Die C-Sprache enth\u00e4lt keine Sammlungen oder ein foreach-Konstrukt. Es verf\u00fcgt jedoch \u00fcber mehrere Standarddatenstrukturen, die als Sammlungen verwendet werden k\u00f6nnen, und foreach kann einfach mit einem Makro erstellt werden.Es treten jedoch zwei offensichtliche Probleme auf:Das Makro ist unhygienisch: Es deklariert eine neue Variable im vorhandenen Bereich, die nach der Schleife verbleibt.Es kann kein foreach-Makro definiert werden, das mit verschiedenen Sammlungstypen (z. B. Array und verkn\u00fcpfte Liste) funktioniert oder auf Benutzertypen erweiterbar ist.C-String als Sammlung von Zeichen#include \/* foreach macro viewing a string as a collection of char values *\/#define foreach(ptrvar, strvar) char* ptrvar; for (ptrvar = strvar; (*ptrvar)\u00a0!= ''; *ptrvar++)int main(int argc, char** argv) { char* s1 = \"abcdefg\"; char* s2 = \"123456789\"; foreach (p1, s1) { printf(\"loop 1: %cn\", *p1); } foreach (p2, s2) { printf(\"loop 2: %cn\", *p2); } return 0;}C int-Array als Sammlung von int (Array-Gr\u00f6\u00dfe zur Kompilierungszeit bekannt)#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[0]))); ++intpvar)int main(int argc, char** argv) { int a1[] = {1, 1, 2, 3, 5, 8}; int a2[] = {3, 1, 4, 1, 5, 9}; foreach (p1, a1) { printf(\"loop 1: %dn\", *p1); } foreach (p2, a2) { printf(\"loop 2: %dn\", *p2); } return 0;}Am allgemeinsten: Zeichenfolge oder Array als Sammlung (zur Laufzeit bekannte Sammlungsgr\u00f6\u00dfe)Hinweis: idxtype kann entfernt werden und typeof(col[0]) an seiner Stelle mit GCC verwendet#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[0]))#define foreach(idxtype, idxpvar, col, colsiz) idxtype* idxpvar; for (idxpvar = col; idxpvar < (col + colsiz); ++idxpvar)int main(int argc, char** argv) { char* c1 = \"collection\"; int c2[] = {3, 1, 4, 1, 5, 9}; double* c3; int c3len = 4; c3 = (double*)calloc(c3len, sizeof(double)); c3[0] = 1.2; c3[1] = 3.4; c3[2] = 5.6; c3[3] = 7.8; foreach (char, p1, c1, strlen(c1)) { printf(\"loop 1: %cn\", *p1); } foreach (int, p2, c2, arraylen(c2)) { printf(\"loop 2: %dn\", *p2); } foreach (double, p3, c3, c3len) { printf(\"loop 3:\u00a0%.1lfn\", *p3); } return 0;}C #[edit]In C # wird angenommen, dass myArray ein Array von Ganzzahlen ist:foreach (int x in myArray) { Console.WriteLine(x); }Language Integrated Query (LINQ) bietet die folgende Syntax, die einen Delegaten- oder Lambda-Ausdruck akzeptiert:myArray.ToList().ForEach(x => Console.WriteLine(x));C ++[edit]C ++ 11 bietet eine foreach-Schleife. Die Syntax \u00e4hnelt der von Java:#include int main(){ int myint[] = {1, 2, 3, 4, 5}; for (int i : myint) { std::cout CFML identifiziert den Wert in diesem Konstrukt f\u00e4lschlicherweise als “Index”. das index Variable erh\u00e4lt den tats\u00e4chlichen Wert des Array-Elements, nicht seinen Index. #collection[k]#Common Lisp[edit]Common Lisp bietet jede F\u00e4higkeit entweder mit dem Dolist Makro:(dolist (i '(1 3 5 6 8 10 14 17)) (print i))oder die M\u00e4chtigen Schleife Makro zum Durchlaufen weiterer Datentypen(loop for i in '(1 3 5 6 8 10 14 17) do (print i))und sogar mit dem mapcar Funktion:(mapcar #'print '(1 3 5 6 8 10 14 17))D.[edit]foreach(item; set) { \/\/ do something to item}orforeach(argument) { \/\/ pass value}Pfeil[edit]for (final element in someCollection) { \/\/ do something with element}Objekt Pascal, Delphi[edit]Foreach-Unterst\u00fctzung wurde in Delphi 2005 hinzugef\u00fcgt und verwendet eine Enumerator-Variable, die in der deklariert werden muss var Sektion.for enumerator in collection dobegin \/\/do something hereend;Eiffel[edit]Die Iterationsform (foreach) des Eiffel-Schleifenkonstrukts wird durch das Schl\u00fcsselwort eingef\u00fchrt across.In diesem Beispiel jedes Element der Struktur my_list wird gedruckt: across my_list as ic loop print (ic.item) endDie lokale Entit\u00e4t ic ist eine Instanz der Bibliotheksklasse ITERATION_CURSOR. Die Funktion des Cursors item bietet Zugriff auf jedes Strukturelement. Nachkommen der Klasse ITERATION_CURSOR kann f\u00fcr spezielle Iterationsalgorithmen erstellt werden. Die Objekttypen, \u00fcber die iteriert werden kann (my_list im Beispiel) basieren auf Klassen, die von der Bibliotheksklasse erben ITERABLE.Die Iterationsform der Eiffel-Schleife kann auch als boolescher Ausdruck beim Schl\u00fcsselwort verwendet werden loop wird durch entweder ersetzt all (bewirkt eine universelle Quantifizierung) oder some (existenzielle Quantifizierung bewirken).Diese Iteration ist ein boolescher Ausdruck, der wahr ist, wenn alle Elemente in enthalten sind my_list haben mehr als drei: across my_list as ic all ic.item.count > 3 endFolgendes gilt, wenn mindestens ein Element eine Anzahl von mehr als drei aufweist: across my_list as ic some ic.item.count > 3 endGehen[edit]Die foreach-Schleife von Go kann verwendet werden, um ein Array, einen Slice, eine Zeichenfolge, eine Karte oder einen Kanal zu durchlaufen.Mit dem Zwei-Wert-Formular erhalten wir den Index \/ Schl\u00fcssel (erstes Element) und den Wert (zweites Element):for index, value := range someCollection {\t\/\/ Do something to index and value}Mit dem einwertigen Formular erhalten wir den Index \/ Schl\u00fcssel (erstes Element):for index := range someCollection {\t\/\/ Do something to index}[11]Groovy[edit]Groovy unterst\u00fctzt zum Schleifen \u00fcber Sammlungen wie Arrays, Listen und Bereiche:def x = [1,2,3,4]for (v in x) \/\/ loop over the 4-element array x{ println v}for (v in [1,2,3,4]) \/\/ loop over 4-element literal list { println v}for (v in 1..4) \/\/ loop over the range 1..4{ println v}Groovy unterst\u00fctzt auch eine for-Schleife im C-Stil mit einem Array-Index:for (i = 0; i println i} \/\/ equivalent to line above, only loop dummy explicitly named \"i\"Haskell[edit]Haskell erm\u00f6glicht das Durchlaufen von Listen mit monadischen Aktionen mit mapM_ und forM_ ((mapM_ mit umgedrehten Argumenten) aus Control.Monad::Codedruckt1234forM_ \"test\" $ char -> do putChar char putChar chartteessttEs ist auch m\u00f6glich, diese Funktionen zu verallgemeinern, um auf anwendbaren Funktoren anstatt auf Monaden und jeder Datenstruktur zu arbeiten, die mit durchquert werden kann traverse ((for mit umgedrehten Argumenten) und mapM ((forM mit umgedrehten Argumenten) aus Data.Traversable.Haxe[edit]for (value in iterable) { trace(value);}Lambda.iter(iterable, function(value) trace(value));Java[edit]In Java wurde ein foreach-Konstrukt in Java Development Kit (JDK) 1.5.0 eingef\u00fchrt.[12]Offizielle Quellen verwenden mehrere Namen f\u00fcr das Konstrukt. Es wird als “Enhanced for Loop” bezeichnet.[12] die “For-Each-Schleife”,[13] und die “foreach-Anweisung”.[14]for (Type item : iterableCollection) { \/\/ Do something to item}JavaScript[edit]Der EcmaScript 6 Standard hat for..of f\u00fcr indexlose Iteration \u00fcber Generatoren, Arrays und mehr:for (var item of array){ \/\/ Do stuff}Alternativ funktionsbasierter Stil: [15]array.forEach(item => { \/\/ Do stuff})F\u00fcr eine ungeordnete Iteration \u00fcber die Schl\u00fcssel in einem Objekt bietet JavaScript die for...in Schleife:for (var key in object) { \/\/ Do stuff with object[key]}Um die Iteration auf die Eigenschaften des Objekts zu beschr\u00e4nken, mit Ausnahme derjenigen, die \u00fcber die Prototypenkette geerbt wurden, ist es manchmal n\u00fctzlich, einen hasOwnProperty () -Test hinzuzuf\u00fcgen, sofern dies von der JavaScript-Engine unterst\u00fctzt wird (f\u00fcr WebKit \/ Safari bedeutet dies “in Version 3 oder h\u00f6her” “).for (var key in object) { if (object.hasOwnProperty(key)) { \/\/ Do stuff with object[key] }}ECMAScript 5 stellte die Object.keys-Methode bereit, um die eigenen Schl\u00fcssel eines Objekts in ein Array zu \u00fcbertragen.[16]var book = { name: \"A Christmas Carol\", author: \"Charles Dickens\" }; for(var key of Object.keys(book)){ alert(\"PropertyName = \" key + \" Property Value = \" + book[key]);}Lua[17][edit]Iterieren Sie nur durch numerische Indexwerte:for index, value in ipairs(array) do\t-- do somethingendDurchlaufen Sie alle Indexwerte:for index, value in pairs(array) do\t-- do somethingendMathematica[edit]In Mathematica Do bewertet einfach einen Ausdruck f\u00fcr jedes Element einer Liste, ohne einen Wert zur\u00fcckzugeben.In[]:= Do[doSomethingWithItem, {item, list}]Es ist \u00fcblicher zu verwenden Table, die das Ergebnis jeder Bewertung in einer neuen Liste zur\u00fcckgibt.In[]:= list = {3, 4, 5};In[]:= Table[item^2, {item, list}]Out[]= {9, 16, 25}MATLAB[edit]for item = array%do somethingendMinze[edit]F\u00fcr jede Schleife werden in Mint folgende Syntax unterst\u00fctzt:for each element of list \/* 'Do something.' *\/endDas for (;;) oder while (true) Endlosschleife in Mint kann mit einer f\u00fcr jede Schleife und einer unendlich langen Liste geschrieben werden.[18]import type\/* 'This function is mapped to' * 'each index number i of the' * 'infinitely long list.' *\/sub identity(x) return xend\/* 'The following creates the list' * '[0, 1, 2, 3, 4, 5, ..., infinity]' *\/infiniteList = list(identity)for each element of infiniteList \/* 'Do something forever.' *\/endZiel c[edit]Foreach-Schleifen, die als schnelle Aufz\u00e4hlung bezeichnet werden, werden ab Objective-C 2.0 unterst\u00fctzt. Sie k\u00f6nnen verwendet werden, um \u00fcber jedes Objekt zu iterieren, das das NSFastEnumeration-Protokoll implementiert, einschlie\u00dflich NSArray, NSDictionary (iteriert \u00fcber Schl\u00fcssel), NSSet usw.NSArray *a = [NSArray new]; \/\/ Any container class can be substitutedfor(id obj in a) { \/\/ Note the dynamic typing (we do not need to know the \/\/ Type of object stored in 'a'. In fact, there can be \/\/ many different types of object in the array. printf(\"%sn\", [[obj description] UTF8String]); \/\/ Must use UTF8String with %s NSLog(@\"%@\", obj); \/\/ Leave as an object}NSArrays k\u00f6nnen auch eine Nachricht an ihre Mitglieder senden:NSArray *a = [NSArray new];[a makeObjectsPerformSelector:@selector(printDescription)];Wenn Bl\u00f6cke verf\u00fcgbar sind, kann ein NSArray automatisch einen Block f\u00fcr jedes enthaltene Element ausf\u00fchren:[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)\t{\t\tNSLog(@\"obj\u00a0%@\", obj);\t\tif ([obj shouldStopIterationNow])\t\t\t*stop = YES;\t}];Die Art der Sammlung, die iteriert wird, bestimmt das Element, das bei jeder Iteration zur\u00fcckgegeben wird. Zum Beispiel:NSDictionary *d = [NSDictionary new];for(id key in d) { NSObject *obj = [d objectForKey:key]; \/\/ We use the (unique) key to access the (possibly nonunique) object. NSLog(@\"%@\", obj);}OCaml[edit]OCaml ist eine funktionale Sprache. Somit kann das \u00c4quivalent einer foreach-Schleife als Bibliotheksfunktion \u00fcber Listen und Arrays erreicht werden.F\u00fcr Listen:List.iter (fun x -> print_int x) [1;2;3;4];;oder kurz gesagt:List.iter print_int [1;2;3;4];;F\u00fcr Arrays:Array.iter (fun x -> print_int x) [|1;2;3;4|];;oder kurz gesagt:Array.iter print_int [|1;2;3;4|];;ParaSail[edit]Die parallele Programmiersprache ParaSail unterst\u00fctzt verschiedene Arten von Iteratoren, einschlie\u00dflich eines allgemeinen “f\u00fcr jeden” Iterators \u00fcber einen 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 Elemend loopParaSail unterst\u00fctzt auch Filter f\u00fcr Iteratoren und die M\u00f6glichkeit, sowohl auf den Schl\u00fcssel als auch auf den Wert einer Karte zu verweisen. Hier ist eine Vorw\u00e4rtsiteration \u00fcber die Elemente von “My_Map”, wobei nur Elemente ausgew\u00e4hlt werden, bei denen sich die Schl\u00fcssel in “My_Set” befinden:var My_Map : Map Univ_String, Value_Type => Tree> := ...const My_Set : Set := [\"abc\", \"def\", \"ghi\"];for each [Str => Tr] of My_Map {Str in My_Set} forward loop \/\/ ... do something with Str or Trend loopPascal[edit]In Pascal f\u00fchrte der ISO-Standard 10206: 1990 eine Iteration \u00fcber festgelegte Typen ein, also:var elt: ElementType; eltset: set of ElementType;{...}for elt in eltset do { ... do something with elt }Perl[edit]In Perl f\u00fcr jeden (was dem k\u00fcrzeren f\u00fcr entspricht) kann verwendet werden, um Elemente einer Liste zu durchlaufen. Der Ausdruck, der die Sammlung angibt, \u00fcber die eine Schleife durchgef\u00fchrt werden soll, wird im Listenkontext ausgewertet, und jedes Element der resultierenden Liste wird wiederum auf die Schleifenvariable ausgerichtet.Listenliteralbeispiel:foreach (1, 2, 3, 4) { print $_;}Array-Beispiele:foreach (@arr) { print $_;}foreach $x (@arr) { #$x is the element in @arr print $x;}Hash-Beispiel:foreach $x (keys %hash) { print $x . \" = \" . $hash{$x}; # $x is a key in %hash and $hash{$x} is its value}Direkte \u00c4nderung der Sammlungsmitglieder:@arr = ( 'remove-foo', 'remove-bar' );foreach $x (@arr){ $x =~ s\/remove-\/\/;}# Now @arr = ('foo', 'bar');PHP[edit]foreach ($set as $value) { \/\/ Do something to $value;}Es ist auch m\u00f6glich, sowohl Schl\u00fcssel als auch Werte mithilfe der alternativen Syntax zu extrahieren:foreach ($set as $key => $value) { echo \"{$key} has a value of {$value}\";}Direkte \u00c4nderung der Sammlungsmitglieder:$arr = array(1, 2, 3);foreach ($arr as &$value) { \/\/ Note the &, $value is a reference to the original value inside $arr $value++;}\/\/ Now $arr = array(2, 3, 4);\/\/ also works with the full syntaxforeach ($arr as $key => &$value) { $value++;}Python[edit]for item in iterable_collection: # Do something with itemDie Tupelzuweisung von Python, die in der foreach-Schleife vollst\u00e4ndig verf\u00fcgbar ist, macht es auch trivial, (Schl\u00fcssel-, Wert-) Paare in assoziativen Arrays zu iterieren:for key, value in some_dict.items(): # Direct iteration on a dict iterates on its keys # Do stuffWie for ... in ist die einzige Art von for-Schleife in Python. Das \u00c4quivalent zur “Z\u00e4hler” -Schleife in anderen Sprachen ist …for i in range(len(seq)): # Do something to seq[i]… obwohl mit dem enumerate Funktion wird eher als “pythonisch” angesehen:for i, item in enumerate(seq): # Do stuff with item # Possibly assign it back to seq[i]Schl\u00e4ger[edit](for ([item set]) (do-something-with item))oder unter Verwendung des herk\u00f6mmlichen Schemas for-each Funktion:(for-each do-something-with a-list)do-something-with ist eine Ein-Argument-Funktion.Raku[edit]In Raku, einer Schwestersprache von Perl, zum muss verwendet werden, um Elemente einer Liste zu durchlaufen (f\u00fcr jeden ist nicht erlaubt). Der Ausdruck, der die Sammlung angibt, \u00fcber die eine Schleife ausgef\u00fchrt werden soll, wird im Listenkontext ausgewertet, jedoch nicht standardm\u00e4\u00dfig abgeflacht, und jedes Element der resultierenden Liste wird wiederum auf die Schleifenvariablen ausgerichtet.Listenliteralbeispiel:Array-Beispiele:Die for-Schleife in ihrer Anweisungsmodifikatorform:for @arr -> $x { say $x;}for @arr -> $x, $y { # more than one item at a time say \"$x, $y\";}Hash-Beispiel:for keys %hash -> $key { say \"$key: $hash{$key}\";}oderfor %hash.kv -> $key, $value { say \"$key: $value\";}oderfor %hash -> $x { say \"$x.key(): $x.value()\"; # Parentheses needed to inline in double quoted string}Direkte \u00c4nderung von Sammlungsmitgliedern mit einem doppelt spitzen Block, ::my @arr = 1,2,3;for @arr $x { $x *= 2;}# Now @arr = 2,4,6;Rubin[edit]set.each do |item| # do something to itemendoderfor item in set # do something to itemendDies kann auch mit einem Hash verwendet werden.set.each do |item,value| # do something to item # do something to valueendRost[edit]Das for Schleife hat die Struktur for in { \/* optional statements *\/ }. Es ruft implizit die IntoIterator::into_iter Methode f\u00fcr den Ausdruck und verwendet den resultierenden Wert, der die implementieren muss Iterator Merkmal. Wenn der Ausdruck selbst ein Iterator ist, wird er direkt von der verwendet for Schleife durch eine Implementierung von IntoIterator f\u00fcr alle Iterators das gibt den Iterator unver\u00e4ndert zur\u00fcck. Die Schleife ruft die Iterator::next Methode auf dem Iterator vor dem Ausf\u00fchren des Schleifenk\u00f6rpers. Wenn Iterator::next kehrt zur\u00fcck Some(_)wird der Wert im Inneren dem Muster zugewiesen und der Schleifenk\u00f6rper wird ausgef\u00fchrt; wenn es zur\u00fcckkommt Nonewird die Schleife beendet.let mut numbers = vec![1, 2, 3];\/\/ Immutable reference:for number in &numbers { \/\/ calls IntoIterator::into_iter(&numbers) println!(\"{}\", number);}for square in numbers.iter().map(|x| x * x) { \/\/ numbers.iter().map(|x| x * x) implements Iterator println!(\"{}\", square);}\/\/ Mutable reference:for number in &mut numbers { \/\/ calls IntoIterator::into_iter(&mut numbers) *number *= 2;}\/\/ prints \"[2, 4, 6]\":println!(\"{:?}\", numbers);\/\/ Consumes the Vec and creates an Iterator:for number in numbers { \/\/ calls IntoIterator::into_iter(numbers) \/\/ ...}\/\/ Errors with \"borrow of moved value\":\/\/ println!(\"{:?}\", numbers);Scala[edit]\/\/ return list of modified elementsitems map { x => doSomething(x) }items map multiplyByTwofor {x FOR %%a IN ( red green blue ) DO frob %%aWindows PowerShell[edit]foreach ($item in $set) { # Do something to $item}Aus einer Pipeline$list | ForEach-Object {Write-Host $_}# or using the aliases$list | foreach {write $_}$list | % {write $_}Extensible Stylesheet Language (XSL)[edit] [20]Siehe auch[edit]Verweise[edit]"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki19\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki19\/2021\/01\/27\/foreach-schleife-wikipedia\/#breadcrumbitem","name":"Foreach-Schleife – Wikipedia"}}]}]