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

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- d'être + d’être )
m Robot : Remplacement de texte automatisé (- l'objet + l’objet )
Ligne 3 :
| précédent = [[../Librairies Scribunto/]]
| suivant = [[../L'objet Title/]]
| page_liée = Exercices/Sur l'objetl’objet Frame
| numéro = 12
| niveau = 10
}}
 
Ce paragraphe étudie plus en détail l'objetl’objet '''frame''' que l'on peut considérer comme étant l'interface avec le programme. C'est l'objetl’objet frame qui reçoit les paramètres que l'on envoie au programme grâce à la commande #invoke.
__TOC__
{{Clr}}
== Nature de l'objetl’objet frame ==
 
Une remarque que l'on peut faire à propos de l'objetl’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'objetl’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, ces deux listes étant susceptibles d’être modifiées au fil des versions de Lua et de Scribunto.
Ligne 70 :
local reponse = " "
for index, objet in pairs(frame.args) do
reponse = reponse.."<br />À la clé "..index..", il y a l'objetl’objet : "..objet
end
return reponse
Ligne 86 :
<br />
 
== Fonctions en relation avec l'objetl’objet frame ==
 
 
Ligne 92 :
 
 
Les fonctions que nous allons étudier dans ce paragraphe se trouvent dans l'objetl’objet '''frame'''. Nous commencerons donc par écrire une fonction '''p.visualisation''' permettant de les visualiser.
 
(Ici, contrairement aux paragraphes précédents, nous visualisons ce qui se trouve dans '''frame''' et pas ce qui se trouve dans '''frame.args'''.)
Ligne 155 :
local model = frame:getParent()
for index, objet in pairs(model.args) do
reponse = reponse.."<br />À la clé "..index..", il y a l'objetl’objet : "..objet
end
return reponse
Ligne 279 :
local nombre,chaine = 0,0
for index, objet in frame:argumentPairs() do
reponse = reponse.."<br />À la clé "..index..", il y a l'objetl’objet : "..objet
end
return reponse