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

Contenu supprimé Contenu ajouté
mise à jour
m →‎Nature de l'objet frame : correction orthographe/grammaire
Ligne 13 :
== Nature de l'objet frame ==
 
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é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'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., Cesces deux listes étant susceptibles d'être modifiées au fil des versions de Lua et de Scribunto.
 
Les fonctions sur lesquelles, on peut compter actuellement sont '''ipairs''' et '''pairs'''.
Ligne 23 :
Nous allons donc donner un exemple simple utilisant la fonction '''ipair'''.
 
Dans le [[module:Frame]], écrivons une fonction '''p.evalue''' qui compte combien il y a d'arguments contenant une valeur numérique et combien il y a d'argumentarguments contenant une chaîne de caractères.
 
<syntaxhighlight lang="lua">