Bei der Programmierung derfür jeden Befehl implementiert eine Schleife, in der die Schleifenvariablen die Werte aus einer oder mehreren Listen annehmen. Im einfachsten Fall gibt es eine Schleifenvariable, varname und eine Liste Liste Dies ist eine Liste von Werten, denen Sie zuweisen können varname . Das Karosserie Argument ist ein Tcl-Skript. Für jedes Element von Liste (in der Reihenfolge vom ersten bis zum letzten)für jeden ordnet den Inhalt des Elements zu varname als ob dielindexDer Befehl wurde verwendet, um das Element zu extrahieren, und ruft dann den Tcl-Interpreter zur Ausführung auf Karosserie .
Zusammenfassung
für jeden varname list body
für jeden varlist1 list1 ? varlist2 list2 … ? Karosserie
Diskussion
In einem allgemeinen Fall kann es mehr als eine Werteliste geben (z. B. list1 und list2 ), und jede Werteliste kann mit einer Liste von Schleifenvariablen (z. B. varlist1 und varlist2 ). Während jeder Wiederholung der Schleife werden die Variablen von jeder varlist werden aufeinanderfolgende Werte aus den entsprechenden zugewiesen Liste . Werte in jedem Liste werden in der Reihenfolge vom ersten bis zum letzten Wert verwendet, und jeder Wert wird genau einmal verwendet. Die Gesamtzahl der Schleifeniterationen ist groß genug, um alle Werte aus allen Wertelisten zu verbrauchen. Wenn eine Werteliste nicht genügend Elemente für jede ihrer Schleifenvariablen in jeder Iteration enthält, werden leere Werte für die fehlenden Elemente verwendet.
Dasbrechen undfortsetzen Anweisungen können innerhalb aufgerufen werden Karosserie mit der gleichen Wirkung wie im zum Befehl. Die foreach gibt eine leere Zeichenfolge zurück.
Beispiele
Die folgende Schleife verwendet ich und j als Schleifenvariablen, um Paare von Elementen einer einzelnen Liste zu durchlaufen.
set x {} foreach {i j} {a b c d e f} {lappend x $ j $ i} # Der Wert von x ist "b a d c f e" # Es gibt drei Iterationen der Schleife.
Die nächste Schleife verwendet ich und j über zwei Listen parallel durchlaufen.
setze x {} foreach i {a b c} j {d e f g} {lappend x $ i $ j} # Der Wert von x ist "a d b e c f {} g" # Es gibt 4 Iterationen der Schleife.
Die beiden Formen werden im folgenden Beispiel kombiniert.
set x {} foreach i {a b c} {j k} {d e f g} {lappend x $ i $ j $ k} # Der Wert von x ist "a d e b f g c {} {}" # Es gibt 3 Iterationen der Schleife.
Anmerkungen
Mehrere verwandte Befehle funktionieren mitfür jeden einschließlich:
- für (n)
- während (n)
- Pause (n)
- weiter (n)
Da sich die Linux-Distributions- und Kernel-Versionen unterscheiden, verwenden Sie die Mann Befehl ( % Mann ), um zu sehen, wie ein Befehl speziell auf Ihrem Computer verwendet wird.