48 lines
3.8 KiB
HTML
48 lines
3.8 KiB
HTML
<HTML><HEAD>
|
|
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
|
|
</HEAD>
|
|
<BODY>
|
|
<div><H3><b>foreach Commandes Internes Tcl</b></H3></div>
|
|
<HR ALIGN="center">
|
|
<div><b>NOM</b></div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">foreach - Itère sur tout leséléments d'une ou plusieurs listes
|
|
</div><br>
|
|
<div><b>SYNTAXE</b></div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;"><b>foreach </b><i>varname list body</i> <br>
|
|
<b>foreach </b><i>varlist1 list1</i> ?<i>varlist2 list2 ...</i>? <i>body</i>
|
|
</div><br>
|
|
<div><b>DESCRIPTION</b></div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>foreach</b> implémente une boucle ou la ou les variable(s) de boucle tirent leur valeurs d'une ou de plusieurs listes. Dans le cas le plus simple il y a une variable de boucle, <i>varname</i>, et une liste, <i>list</i>, qui est une liste de valeurs a assigner à <i>varname</i>. L'argument <i>body</i> est un script Tcl. Pour chaque élément de <i>list</i> (dans l'ordre du premier au dernier), <b>foreach</b> assigne le contenu de l'élément à <i>varname</i> comme si la commande <A HREF="130.htm"><b>lindex</b></A> avait été utilisée pour extraire l'élément, ensuite elle appelle l'interpréteur Tcl pour exécuter <i>body</i>. </div>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">Dans le cas general il peut y avoir plus d'une liste de valeurs (ex., <i>list1</i> et <i>list2</i>), et chaque liste de valeurs peut être associée à une liste de variables de boucle (ex., <i>varlist1</i> et <i>varlist2</i>). Durant chaque iteration de la boucle, aux variables de chaque <i>varlist</i> sont assignés les valeurs consecutive de la correspondante <i>list</i>. Les valeurs de chaque <i>list</i> sont utilisées dans l'ordre du premier to dernier, et chaque valeur est utilisée une seule fois. Le nombre total d'itérations est suffisant pour utiliser toutes les valeurs à partir de toutes les listes de valeurs. Si une liste de valeurs ne contient pas assez d'éléments pour chacune de ses variables de boucle à chaque iteration, des valeurs vides sont utilisées pour les éléments manquants. </div>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">Les instructions <A HREF="92.htm"><b>break</b></A> et <A HREF="99.htm"><b>continue</b></A> peuvent être appelées dans <i>body</i>, avec le même effet que dans la commande<A HREF="115.htm"><b> for</b></A>. <b>Foreach</b> retourne une chaîne vide.
|
|
</div><br>
|
|
<div><b>EXEMPLES</b></div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">La boucle suivante utilise i et j comme variables de boucle pour itérer sur des paires d'éléments d'une simple liste. </div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 102px;">set x {}<br>
|
|
foreach {i j} {a b c d e f} {<br>
|
|
lappend x $j $i<br>
|
|
}<br>
|
|
# La valeur de x est "b a d c f e"<br>
|
|
# Il y a 3 iterations de boucle.
|
|
</div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">La boucle suivante utilise i et j pour itérer sur deux listes en parallèle. </div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 102px;">set x {}<br>
|
|
foreach i {a b c} j {d e f g} {<br>
|
|
lappend x $i $j<br>
|
|
}<br>
|
|
# La valeur de x est "a d b e c f {} g"<br>
|
|
# Il y a 4 iterations de boucle.<br>
|
|
</div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 51px;">Les deux formes sont combinées dans le suivant exemple.</div><br>
|
|
<div ALIGN="LEFT" style="margin-left: 102px;">set x {}<br>
|
|
foreach i {a b c} {j k} {d e f g} {<br>
|
|
lappend x $i $j $k<br>
|
|
}<br>
|
|
# La valeur de x est "a d e b f g c {} {}"<br>
|
|
# Il y a 3 iterations de boucle.
|
|
</div><br>
|
|
<br>
|
|
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A> <A HREF="115.htm"><b>Précédent</b></A> <A HREF="117.htm"><b>Suivant</b></A>
|
|
</div>
|
|
</BODY></HTML>
|