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<49>re sur tout les<65>l<EFBFBD>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<70>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 <20> <i>varname</i>. L'argument <i>body</i> est un script Tcl. Pour chaque <20>l<EFBFBD>ment de <i>list</i> (dans l'ordre du premier au dernier), <b>foreach</b> assigne le contenu de l'<27>l<EFBFBD>ment <20> <i>varname</i> comme si la commande <A HREF="130.htm"><b>lindex</b></A> avait <20>t<EFBFBD> utilis<69>e pour extraire l'<27>l<EFBFBD>ment, ensuite elle appelle l'interpr<70>teur Tcl pour ex<65>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 <20>tre associ<63>e <20> 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<67>s les valeurs consecutive de la correspondante <i>list</i>. Les valeurs de chaque <i>list</i> sont utilis<69>es dans l'ordre du premier to dernier, et chaque valeur est utilis<69>e une seule fois. Le nombre total d'it<69>rations est suffisant pour utiliser toutes les valeurs <20> partir de toutes les listes de valeurs. Si une liste de valeurs ne contient pas assez d'<27>l<EFBFBD>ments pour chacune de ses variables de boucle <20> chaque iteration, des valeurs vides sont utilis<69>es pour les <20>l<EFBFBD>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 <20>tre appel<65>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<68>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<69>rer sur des paires d'<27>l<EFBFBD>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<69>rer sur deux listes en parall<6C>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<69>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<EFBFBD>c<EFBFBD>dent</b></A> <A HREF="117.htm"><b>Suivant</b></A>
|
|||
|
</div>
|
|||
|
</BODY></HTML>
|