By programmering implementeer die foreach opdrag 'n lus waar die lus veranderlikes die waardes van een of meer lyste aanneem. In die eenvoudigste geval is daar een lus veranderlike, naam , en een lys, lys , dit is 'n lys van waardes om na die naam toe te ken . Die liggaamsargument is 'n Tcl-skripsie. Vir elke element van die lys (in volgorde van eerste tot laaste), gee vooreach die inhoud van die element aan die naam asof die lindex- opdrag gebruik is om die element te onttrek, en bel die Tcl-tolk om die liggaam uit te voer.
opsomming
foreach naam lys lys liggaam
foreach varlist1 list1 ? varlist2 list2 ... ? liggaam
bespreking
In 'n algemene geval kan daar meer as een waarde lys wees (bv. Lys1 en lys2 ), en elke waarde lys kan geassosieer word met 'n lys van lus veranderlikes (bv. Varlist1 en varlist2 ). Tydens elke herhaling van die lus word die veranderlikes van elke varlist toegeken opeenvolgende waardes uit die ooreenstemmende lys . Waardes in elke lys word van eerste tot laaste gebruik, en elke waarde word presies een keer gebruik. Die totale aantal lus herhalings is groot genoeg om al die waardes uit al die waarde lyste te gebruik. As 'n waarde lys nie genoeg elemente bevat vir elk van die lusveranderlikes in elke herhaling nie, word leë waardes vir die ontbrekende elemente gebruik.
Die breek en voortgaan stellings kan in die liggaam aangespreek word, met dieselfde effek as in die opdrag. Die f oreach gee 'n leë string terug.
voorbeelde
Die volgende lus gebruik i en j as lusveranderlikes om oor pare elemente van 'n enkele lys te herhaal.
stel x {} foreach {ij} {abcdef} {lappend x $ j $ i} # Die waarde van x is "badcfe" # Daar is 3 iterasies van die lus.Die volgende lus gebruik i en j om twee parallelle lyste te herhaal.
stel x {} foreach i {abc} j {defg} {lappend x $ i $ j} # Die waarde van x is "adbecf {} g" # Daar is 4 iterasies van die lus.Die twee vorms word gekombineer in die volgende voorbeeld.
stel x {} voor {i} {abc} {jk} {defg} {lappend x $ i $ j $ k} # Die waarde van x is "adebfgc {} {}" # Daar is 3 iterasies van die lus.notas
Verskeie verwante opdragte werk met ewens, insluitend:
- vir (N)
- terwyl (N)
- breek (N)
- voortgaan (N)
Aangesien Linux verspreiding en kern-vrystelling vlakke wissel, gebruik die man bevel ( % man ) om te sien hoe 'n opdrag spesifiek op u rekenaar gebruik word .