Luua nimekirja iteraatorid Linuxi "foreach" käsuga

Programmeerimisel rakendab foreach käsk loopi, kus loopi muutujad eeldavad väärtusi ühelt või enamalt loendist. Lihtsaimas asjas on üks loop-muutuja, varname ja üks loend, nimekiri , see on nimekiri väärtustest, mis tuleb määrata varnamele . Kehtiv argument on Tcl-skript. Iga loendi elemendi (esimese kuni viimase) korral määrab foreach elemendi sisu varnumiseks nii, nagu oleks elemendi väljavõtmiseks kasutatud lindexi käsku, seejärel kutsub see keele käivitamiseks Tcl-tõlk.

Kokkuvõte

foreach varname nimekiri asutus
foreach varlist1 list1 ? varlist2 list2 ... ? keha

Arutelud

Üldjuhul võib olla rohkem kui üks väärtuste loend (nt list1 ja list2 ) ning iga väärtuste loendit saab seostada loop-muutujate loendiga (nt varlist1 ja varlist2 ). Iga tsükli iteratsiooni ajal määravad iga nimekirja muutujad vastava loendi järjestikused väärtused. Kõigi loendite väärtused on kasutusel järjekorras esimest korda viimaseks ning iga väärtust kasutatakse täpselt üks kord. Loopi iteratsioonide koguarv on piisavalt suur, et kasutada kõiki väärtusi kõigist väärtuste loenditest. Kui väärtuste loend ei sisalda iga loendis oleva loopi muutuja jaoks piisavalt elemente, puuduvad elemendid tühjad väärtused.

Käsku murda ja jätkama võidakse kasutada keha sees, millel on sama mõju kui käskluses. F oreach tagastab tühja stringi.

Näited

Järgmine silmus kasutab i ja j silmuste muutujatena, et neid ühe loendi elementide paaritamiseks järjestada.

set x {} foreach {ij} {abcdef} {lappend x $ j $ i} # x väärtus on "badcfe" # on loendis 3 iteratsiooni.

Järgmine loop kasutab i ja j, et järjestada kahte loendit paralleelselt.

set x {} foreach i {abc} j {defg} {lappend x $ i $ j} # x väärtus on "adbecf {} g" # seal on 4 kordust loendist.

Need kaks vormi on ühendatud järgmises näites.

määrake x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k} # x väärtuseks on "adebfgc {} {}" # Sellel on kolm iteratsiooni loopist.

Märkused

Mitu seostatud käsku töötavad ettepoole, sealhulgas:

Kuna Linuxi levitamise ja tuumade vabastamise tase on erinev, kasutage käsuga man ( % man ), et näha, kuidas käsku konkreetselt teie konkreetsel arvutis kasutatakse .