Uplevel

From Base de connaissances eggdrops & TCL
Jump to: navigation, search

uplevel - Exécute un script dans un cadre de pile différent

Syntaxe

uplevel ?level? arg ?arg ...?

Description

Par exemple, supposez que la fonction a a été appelée au premier plan, et qu'elle a appelé b, et que b appelé c. Supposez que c appelle la commande uplevel Si level est 1 ou #2 ou omis, alors la commande sera exécutée dans le contexte de variable de b Si level est 2 ou #1 alors la commande sera exécutée dans le contexte de variable de a. Si level est 3 ou #0 alors la commande sera exécutée au premier plan (seulement les variables globales seront visibles).

La commande uplevel cause la disparition de la fonction appelante de la pile d'appel pendant que la commande est exécutée. Dans l'exemple ci-dessus , supposez que c appelle la commande

uplevel 1 {set x 43; d}

où d est une autre fonction Tcl La commande set modifiera la variable x dans le contexte de b, et d s'exécutera au niveau 3, comme si elle etait appelée de b. Si elle exécute ensuite la commande

uplevel {set x 42}

alors la commande set modifiera la même variable x dans le contexte de b: la fonction c n'apparait pas être sur la pile d'appel quand d s'exécute. La commande info level peut être employée pour obtenir le niveau de la fonction courante.

Uplevel rend possible l'implémentation de nouvelles structures de contrôle comme fonctions Tcl (par exemple, uplevel pourrait être utilisée pour implémenter la construction while comme fonction Tcl).

namespace

Voir également

proc, return, global, upvar