« Initiation au Lua avec Scribunto/L'objet Frame » : différence entre les versions
Contenu supprimé Contenu ajouté
rédaction |
rédaction |
||
Ligne 172 :
==== frame:
Cette fonction permet d'utiliser des fonctions qui, normalement, attendent des arguments provenant d'une commande '''#invoke'''.
Dans l'exemple ci-dessous la fonction '''p.replique''' est rédigée comme si elle devait être utilisée grâce à l'appel '''<nowiki>{{#invoke:Frame|replique|jardin|maison}}</nowiki>''' par exemple. La fonction '''p.child''' fabrique un nouvel objet ''frame'' avec pour arguments "jeudi" et frame.args[2] et appelle la fonction '''p.replique''' sous la forme '''p.replique(newFrame)''', ce qui est alors équivalent à un appel du type '''<nowiki>{{#invoke:Frame|replique|jeudi|frame.args[2]}}</nowiki>''' que l'on n'aurait pas pu faire puisque nous ne pouvons pas utiliser la commande '''#invoke''' dans un module.
<syntaxhighlight lang="lua">
local p = {}
function p.replique(frame)
return "Je renvoie "..frame.args[1].." et "..frame.args[2]
end
function p.child(frame)
newFrame = frame:newChild{args={"Jeudi",frame.args[2]}}
return p.replique(newFrame)
end
return p
</syntaxhighlight>
'''<nowiki>{{#invoke:Frame|
==== frame:
{{...}}
Ligne 193 ⟶ 205 :
</syntaxhighlight>
'''<nowiki>{{#invoke:Frame|
==== frame:
{{...}}
Ligne 205 ⟶ 217 :
</syntaxhighlight>
'''<nowiki>{{#invoke:Frame|
==== frame:
{{...}}
Ligne 217 ⟶ 229 :
</syntaxhighlight>
'''<nowiki>{{#invoke:Frame|
|