The pro každého příkaz implementuje smyčku, kde proměnné smyčky převezmou hodnoty z jednoho nebo více seznamů.
Synopse
Příkaz má jednu ze dvou následujících forem: foreach varname list body
foreach varlist1 list1? varlist2 list2 …? tělo
V nejjednodušším případě existuje jedna proměnná smyčky, varnamea jeden seznam, seznam, který identifikuje hodnoty, ke kterým je třeba přiřadit varname. The tělo argumentem je skript Tcl. Pro každý prvek souboru seznam (v pořadí od prvního do posledního), pro každého přiřadí obsah prvku k varname jako kdyby lindex k extrahování prvku byl použit příkaz, poté volá ke spuštění tlumočníka Tcl tělo.
Poznámky k použití
V obecném případě může existovat více než jeden seznam hodnot (např. seznam 1 a seznam 2) a každý seznam hodnot může být spojen se seznamem proměnných smyčky (např. varlist1 a varlist2). Během každé iterace smyčky proměnné každého varlist jsou přiřazeny po sobě jdoucí hodnoty z odpovídajících seznam. Hodnoty v každém seznam jsou použity v pořadí od prvního do posledního a každá hodnota je použita přesně jednou. Celkový počet iterací smyček je dostatečně velký, aby bylo možné použít všechny hodnoty ze všech seznamů hodnot. Pokud seznam hodnot neobsahuje dostatek prvků pro každou ze svých proměnných smyčky v každé iteraci, pro chybějící prvky se použijí prázdné hodnoty. The přestávka a pokračovat prohlášení lze vyvolat uvnitř tělo, se stejným účinkem jako v pro příkaz. The pro každého vrací prázdný řetězec.
Příklady
Následující smyčka používá já a j jako proměnné smyčky k iteraci přes páry prvků jednoho seznamu. nastavit x {}
foreach {ij} {abcdef} {
lappend x $ j $ i
}
# Hodnota x je „badcfe“
# K dispozici jsou 3 iterace smyčky.
Další smyčka používá já a j iterovat souběžně přes dva seznamy. nastavit x {}
foreach i {abc} j {defg} {
lappend x $ i $ j
}
# Hodnota x je „adbecf {} g“
# K dispozici jsou 4 iterace smyčky.
Tyto dvě formy jsou kombinovány v následujícím příkladu. nastavit x {}
foreach i {abc} {jk} {defg} {
lappend x $ i $ j $ k
}
# Hodnota x je „adebfgc {} {}“
# K dispozici jsou 3 iterace smyčky.
S ním pracuje několik souvisejících příkazů pro každého počítaje v to pro, zatímco, přestávka, a pokračovat.