« Initiation au Lua avec Scribunto/L'objet Frame » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- l'ordre + l’ordre )
m Robot : Remplacement de texte automatisé (- l'existence + l’existence )
Ligne 15 :
Une remarque que l'on peut faire à propos de l'objet '''frame''' et de la façon de l'utiliser comme l'accès aux arguments '''frame.args[1]''', '''frame.args[2]''', etc. est la ressemblance avec les notations relatives aux tables. '''frame''' serait une table et '''frame.args''' que l'on pourrait aussi noter '''frame["args"]''' serait une table, indexée par la chaîne de caractères "args", se trouvant dans la table '''frame'''. Par contre '''frame.args''' serait une table à accès numérique. C'est pour cela que l'on note ses arguments '''frame.args[1]''', '''frame.args[2]''', etc.
 
En réalité, ce que l'on vient de dire n'est pas tout à fait vrai. À l'appel d'un module avec #invoke, la table '''frame''' n'est pas créée et remplie tel que l'on vient de le dire. Quand l'on fait appel à un élément de la table numérique '''frame.arg''', une méta-méthode est activée pour demander l'objet souhaité au logiciel MediaWiki. La table '''frame''' est en réalité une méta-table remplie de méta-méthodes dont la fonction est de simuler l'existencel’existence d'une table qui contiendrait les éléments décrits plus haut alors, qu'en réalité, ils sont demandés au fur et à mesure des besoins au logiciel MediaWiki.
 
Comme "frame" n'est pas une vraie table, on n'est pas assuré que toutes les fonctions agissant sur les tables vont fonctionner correctement. Nous devons donc connaître la liste des fonctions qui fonctionnent correctement et la liste des fonctions qui ne fonctionnent pas correctement, ces deux listes étant susceptibles d'être modifiées au fil des versions de Lua et de Scribunto.