Konstrui Listo Iterators Kun la Linukso "Antaŭa" Komando

Kiam programado , la antaŭa komando implementas buklon kie la buklaj variabloj supozas la valorojn de unu aŭ pli lertaj. En la plej simpla kazo ekzistas unu bukla variablo, varname , kaj unu listo, listo , tio estas listo de valoroj por atribui varname . La korpa argumento estas Tcl-skripto. Por ĉiu ero de listo (en la unua ordo ĝis la lasta), antaŭdosiero atribuas la enhavon de la elemento al varname kvazaŭ la lindex- komando estis uzata por ĉerpi la elementon, tiam vokas la Tcl-interpretiston por ekzekuti korpon .

Sinopsis

foreach varname listo korpo
foreach varlist1 list1 ? varlist2 list2 ... ? korpo

Diskuto

En ĝenerala kazo, ekzistas pli ol unu valora listo (ekz., Listo1 kaj listo2 ), kaj ĉiu valora listo povas esti asociita kun listo de buklaj variabloj (ekz. Varlist1 kaj varlist2 ). Dum ĉiu ripeto de la buklo, la variabloj de ĉiu varlisto estas atribuitaj sinsekvaj valoroj de la responda listo . Valoroj en ĉiu listo estas uzitaj en ordo de unua ĝis lasta, kaj ĉiu valoro estas uzata ĝuste unufoje. La tuta nombro de buklaj iteradoj sufiĉas por uzi ĉiujn valorojn de ĉiuj valoraj listoj. Se valora listo ne enhavas sufiĉe da elementoj por ĉiu el ĝiaj buklaj variabloj en ĉiu ripeto, malplenaj valoroj estas uzataj por mankantaj elementoj.

La rompi kaj daŭrigi deklarojn povas esti alvokitaj en la korpon , kun la sama efiko kiel en la por komando. La fikcio redonas malplenan kordon.

Ekzemploj

La sekva buklo uzas i kaj j kiel buklaj variabloj ripeti super paroj de eroj de ununura listo.

aro x {} foreach {ij} {abcdef} {lappend x $ j $ i} # La valoro de x estas "badcfe" # Estas 3 ripetoj de la buklo.

La sekva buklo uzas i kaj j por ripeti du listojn paralele.

aro x {} foreach i {abc} j {defg} {lappend x $ i $ j} # La valoro de x estas "adbecf {} g" # Estas 4 ripetoj de la buklo.

La du formoj estas kombinitaj en la sekva ekzemplo.

aro x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k} # La valoro de x estas "adebfgc {} {}" # Estas 3 ripetoj de la buklo.

Notoj

Pluraj rilataj komandoj funkcias kun antaŭvidado inkluzivanta:

Ĉar la distribuado de Linukso kaj kerno-liberigo varias, uzu la komandon ( % viro ) por vidi kiel komando uzas specife en via komputilo .