Skip to main content

Bouw lijst-iterators met het Linux "foreach" -commando

Boogie T. - BOUW (April 2025)

Boogie T. - BOUW (April 2025)
Anonim

Tijdens het programmeren, deforeach commando implementeert een lus waarbij de lusvariabelen de waarden aannemen uit een of meer lijsten. In het eenvoudigste geval is er één lusvariabele, varname en een lijst, lijst , dat is een lijst met waarden waaraan u kunt toewijzen varname . De lichaam argument is een Tcl-script. Voor elk element van lijst (op volgorde van eerste naar laatste),foreach kent de inhoud van het element toe aan varname alsof hetLindexcommando was gebruikt om het element te extraheren en roept vervolgens de Tcl-interpreter op om uit te voeren lichaam .

Korte inhoud

foreach varname lijst body

foreach varlist1 lijst1 ? varlist2 lijst2 … ? lichaam

Discussie

In een algemeen geval kan er meer dan één waardenlijst zijn (bijv. list1 en list2 ) en elke waardenlijst kan worden gekoppeld aan een lijst met lusvariabelen (bijv. varlist1 en varlist2 ). Tijdens elke iteratie van de lus, de variabelen van elk varlist toegewezen opeenvolgende waarden van de overeenkomstige lijst . Waarden in elk lijst worden van begin tot einde in volgorde gebruikt, en elke waarde wordt exact één keer gebruikt. Het totale aantal lus-iteraties is groot genoeg om alle waarden uit alle waardenlijsten te gebruiken. Als een waardenlijst niet voldoende elementen bevat voor elk van de loopvariabelen in elke iteratie, worden lege waarden gebruikt voor de ontbrekende elementen.

Debreken endoorgaan met statements kunnen binnenin worden opgeroepen lichaam , met hetzelfde effect als in de voor commando. De foreach geeft een lege string terug.

Voorbeelden

De volgende lus maakt gebruik van ik en j als lusvariabelen om paren van elementen van een enkele lijst te herhalen.

set x {} voor elke {i j} {a b c d e f} {lappend x $ j $ i} # De waarde van x is "b a d c f e" # Er zijn 3 herhalingen van de lus.

De volgende lus maakt gebruik van ik en j om meer dan twee lijsten parallel te herhalen.

set x {} voor elke i {a b c} j {d e f g} {lappend x $ i $ j} # De waarde van x is "a d b e c f {} g" # Er zijn 4 herhalingen van de lus.

De twee vormen worden gecombineerd in het volgende voorbeeld.

set x {} voor elke i {a b c} {j k} {d e f g} {lappend x $ i $ j $ k} # De waarde van x is "a d e b f g c {} {}" # Er zijn 3 herhalingen van de lus.

Notes

Verschillende gerelateerde opdrachten werken metforeach inclusief:

  • voor (n)
  • while (n)
  • break (n)
  • verder (n)

Omdat Linux-distributie en kernel-release niveaus variëren, gebruikt u de man commando ( % man ) om te zien hoe een opdracht specifiek op uw specifieke computer wordt gebruikt.