Lua: Le tutoriel  wxWidgets
Lua
_G: Environnement non global.

Un des problèmes avec l'environnement global, est que justement, il est global...

Toute modification affectera l'ensemble de votre programme.

Par exemple, lorsque vous installez une métatable pour contrôler l'accès global, votre programme dans son ensemble doit suivre ces directives.

Et si vous souhaitez utiliser une bibliothèque qui utilise des variables globales sans les déclarer, vous êtes dans la "panade"...

La version 5.0 de Lua avait introduit les fonctions setfenv() et getfenv() qui sont maintenant dépréciées.

Pour définir l'environnement d'une fonction Lua, vous devrez utiliser un environnement lexical* ou la nouvelle fonction loadin(env, ...) (ou l'équivalent de setfenv() dans la bibliothèque de débogage. (debug.setfenv (object, table)))

Un petit rappel:
loadin(env, ...) est similaire à load(), sauf que env défini l'environnement de la fonction créée.
Les paramètres après env sont similaires à ceux de load().

env peut être une fonction Lua ou un nombre qui spécifie le niveau de la pile de la fonction: Le niveau 1 étant la fonction d'appel.


*
Un environnement lexical définit un nouvel environnement courant pour le code situé à l'intérieur de son bloc
Autrement dit, un environnement lexical, change la table utilisée pour résoudre tous les accès au niveau des variables globales, à l'intérieur d'un bloc.
logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 21 décembre 2012.
Valid XHTML 1.0 Transitional

wxlualogo
Flèche haut
Flèche gauche
Flèche haut
Flèche droite