projman/hlp/fr/tcl/uplevel.htm

30 lines
4.2 KiB
HTML
Raw Normal View History

2015-10-19 13:27:31 +03:00
<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<66>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<61>n<EFBFBD>s comme si ils avait <20>t<EFBFBD> transmis <20> <A HREF="98.htm"><b>concat</b></A>; le r<>sultat est alors <20>valu<6C> dans le contexte de variable indiqu<71> par <i>level</i> <b>Uplevel</b> retourne le r<>sultat de cette <20>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) <20> franchir avant l'ex<65>cution de la commande Si <i>level</i> consiste en <b>#</b> suivi par un nombre alors le nombre donne un num<75>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 <20>t<EFBFBD> appel<65>e au premier plan, et qu'elle a appel<65> <b>b</b>, et que <b>b</b> appel<65> <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<65>cut<75>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<65>cut<75>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<65>cut<75> 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<65>cut<75>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;">o<EFBFBD> <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<65>cutera au niveau 3, comme si elle etait appel<65>e de <b>b</b>. Si elle ex<65>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 <20>tre sur la pile d'appel quand <b>d</b> s'ex<65>cute. La commande &quot;<b>info level</b>&quot; peut <20>tre employ<6F>e pour obtenir le niveau de la fonction courante. </div>
<div ALIGN="LEFT" style="margin-left: 51px;"><b>Uplevel</b> rend possible l'impl<70>mentation de nouvelles structures de contr<74>le comme fonctions Tcl (par exemple, <b>uplevel</b> pourrait <20>tre utilis<69>e pour impl<70>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<66>on (outre l'appel de fonction) de modifier le contexte de nom Tcl. Elle ajoute un cadre d'appel <20> la pile pour repr<70>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> <20>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<EFBFBD>c<EFBFBD>dent</b></A>&nbsp;&nbsp;<A HREF="178.htm"><b>Suivant</b></A></div>
</BODY></HTML>