Skip to content

Skapa lista -Iteratorer med Linux ’foreach’ -kommandot

8 de september de 2021
gentoo penguin cuverville island antarctica 453588343 5b49b2ab46e0fb005b7288b6

De för varje kommando implementerar en loop där loop -variablerna antar värdena från en eller flera listor.

Synopsis

Kommandot har en av de två följande formerna: foreach varname list body
föreach varlist1 list1? varlist2 list2 …? kropp

I det enklaste fallet finns det en slingvariabel, varnameoch en lista, lista, som identifierar värden att tilldela varname. De kropp argument är ett Tcl -skript. För varje element av lista (i ordning från första till sista), för varje tilldelar innehållet i elementet till varname som om lindex kommando hade använts för att extrahera elementet, och kallar sedan Tcl -tolken för att köra kropp.

Användningsanteckningar

I ett allmänt fall kan det finnas mer än en värdelista (t.ex. lista 1 och lista2), och varje värdelista kan associeras med en lista med slingvariabler (t.ex. varlist1 och varlist2). Under varje iteration av slingan, variablerna för varje varlist tilldelas på varandra följande värden från motsvarande lista. Värden i varje lista används i ordning från första till sista, och varje värde används exakt en gång. Det totala antalet loop -iterationer är tillräckligt stort för att använda alla värden från alla värdelistor. Om en värdelista inte innehåller tillräckligt med element för var och en av dess loopvariabler i varje iteration används tomma värden för de saknade elementen. De ha sönder och Fortsätta uttalanden kan åberopas inuti kropp, med samma effekt som i för kommando. De för varje returnerar en tom sträng.

Exempel

Följande loop använder i och j som loopvariabler för att iterera över par av element i en enda lista. ange x {}
sök efter {ij} {abcdef} {
lappend x $ j $ i
}
# Värdet på x är ”badcfe”
# Det finns tre iterationer av slingan.

Nästa slinga använder i och j att iterera över två listor parallellt. ange x {}
föreach i {abc} j {defg} {
lappend x $ i $ j
}
# Värdet på x är ”adbecf {} g”
# Det finns fyra iterationer av slingan.

De två formerna kombineras i följande exempel. ange x {}
föreach i {abc} {jk} {defg} {
lappend x $ i $ j $ k
}
# Värdet på x är ”adebfgc {} {}”
# Det finns tre iterationer av slingan.

Flera relaterade kommandon fungerar med för varje Inklusive för, medan, ha sönder, och Fortsätta.