projman/hlp/fr/tcl/uplevel.htm
2015-10-19 14:27:31 +04:00

30 lines
4.2 KiB
HTML

<HTML><HEAD>
<BASEFONT FACE="Times New Roman" SIZE="2" COLOR="#000000">
</HEAD>
<BODY>
<div><H3><b>uplevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commandes Internes Tcl</b></H3></div>
<HR ALIGN="center">
<div><b>NOM</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">uplevel - Execute un script dans un cadre de pile différent
</div><br>
<div><b>SYNTAXE</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>uplevel </b>?<i>level</i>?<i> arg </i>?<i>arg ...</i>?
</div><br>
<div><b>DESCRIPTION</b></div><br>
<div ALIGN="LEFT" style="margin-left: 51px;">Tous les arguments <i>arg</i> sont concaténés comme si ils avait été transmis à <A HREF="98.htm"><b>concat</b></A>; le résultat est alors évalué dans le contexte de variable indiqué par <i>level</i> <b>Uplevel</b> retourne le résultat de cette évaluation . </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Si <i>level</i> est un entier alors cela donne la distance (au-dessus de la pile d'appel de la fonction) à franchir avant l'exécution de la commande Si <i>level</i> consiste en <b>#</b> suivi par un nombre alors le nombre donne un numéro absolu de niveau Si <i>level</i> est omis alors il est par défaut de <b>1</b> <i>Level</i> ne peut pas avoir la valeur par défaut si le premier argument <i>command</i> commence avec un chiffre ou un <b>#</b>. </div>
<div ALIGN="LEFT" style="margin-left: 51px;">Par exemple, supposez que la fonction <b>a</b> a été appelée au premier plan, et qu'elle a appelé <b>b</b>, et que <b>b</b> appelé <b>c</b>. Supposez que <b>c</b> appelle la commande<b> uplevel</b> Si <i>level</i> est <b>1</b> ou <b>#2</b>&nbsp; ou omis, alors la commande sera exécutée dans le contexte de variable de <b>b</b> Si <i>level</i> est <b>2</b> ou <b>#1</b> alors la commande sera exécutée dans le contexte de variable de <b>a</b>. Si <i>level</i> est <b>3</b> ou <b>#0</b> alors la commande sera exécuté au premier plan (seulement les variables globales seront visibles). </div>
<div ALIGN="LEFT" style="margin-left: 51px;">La commande <b>uplevel</b> cause la disparition de la fonction appelante de la pile d'appel pendant la que commande est exécutée. Dans l'exemple ci-dessus , supposez que <b>c</b> appelle la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>uplevel 1 &#123;set x 43; d}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>d</b> est une autre fonction Tcl La commande <A HREF="161.htm"><b>set</b></A> modifiera la variable <b>x</b> dans le contexte de<b> b</b>, et <b>d</b> s'exécutera au niveau 3, comme si elle etait appelée de <b>b</b>. Si elle exécute ensuite la commande </div>
<div ALIGN="LEFT" style="margin-left: 102px;"><b>uplevel &#123;set x 42}</b></div>
<div ALIGN="LEFT" style="margin-left: 51px;">alors la commande <A HREF="161.htm"><b>set</b></A> modifiera la même variable <b>x</b> dans le contexte de<b> b</b>: la fonction <b>c</b> n'apparait pas être sur la pile d'appel quand <b>d</b> s'exécute. La commande &quot;<b>info level</b>&quot; peut être employée pour obtenir le niveau de la fonction courante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Uplevel</b> rend possible l'implémentation de nouvelles structures de contrôle comme fonctions Tcl (par exemple, <b>uplevel</b> pourrait être utilisée pour implémenter la construction <A HREF="181.htm"><b>while</b></A> comme fonction Tcl). </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>namespace eval</b> est une autre façon (outre l'appel de fonction) de modifier le contexte de nom Tcl. Elle ajoute un cadre d'appel à la pile pour représenter le contexte namespace. Ceci signifie que chaque commande <b>namespace eval</b> compte comme un autre niveau d'appel pour les commandes <b>uplevel</b> et <A HREF="178.htm"><b>upvar</b></A>. Par exemple, <b>info level 1</b> renverra une liste décrivant une commande qui est soit l'appel de fonction le plus externe ou la commande<b> namespace eval</b> la plus externe. Egalement, <b>uplevel #0</b> évalue un script au premier plan dans le namespace le plus externe (le namespace global )
</div><br>
<div><b>VOIR EGALEMENT</b></div><br>
<div><A HREF="141.htm">namespace</A>(n)</div>
<br>
<br><div ALIGN="CENTER"><A HREF="index.htm"><b>Index</b></A>&nbsp;&nbsp;<A HREF="177.htm"><b>Précédent</b></A>&nbsp;&nbsp;<A HREF="178.htm"><b>Suivant</b></A></div>
</BODY></HTML>