« Initiation au Lua avec Scribunto/Gestion de l'environnement » : différence entre les versions
Contenu supprimé Contenu ajouté
Ligne 214 :
== Comment utiliser des fonctions écrites dans un autre module ==
Dans les chapitres précédents, nous avons dit qu'une variable ou une fonction déclarée avec le mot-clé '''local''' n'est utilisable qu'
Le principal intérêt de cette possibilité va être de pouvoir se confectionner des modules contenant des fonctions qui peuvent être utiles dans plusieurs autres modules en évitant ainsi de devoir les réécrire
La fonction préprogrammée qui va nous permettre d'appeler le contenu d'un autre module est la fonction '''require'''. Il y a deux
==== Première façon : On souhaite récupérer des objets indépendants de la table p ====
Ligne 249 :
==== Deuxième façon : L'objet que l'on souhaite récupérer est dans
C'est un peu comme si l'on souhaitait utiliser la commande '''#invoke''' à partir d'un autre module. Mais cette commande ne marche pas si elle est utilisée dans un module. Nous allons donc transférer le contenu de la table '''p''' dans une table locale au module appelant.
Ligne 269 :
</syntaxhighlight>
La grosse différence avec ce que l'on avait l'habitude de voir est que l'on ne trouve pas '''frame''' entre les parenthèses de la fonction '''p.cube''' puisque, cette fois, nous n'avons pas l'intention d'utiliser la commande '''#invoke'''. À part cela, le reste est identique !
{{Encart
| couleur = olive
| symbole = question
| contenu =
'''Question :''' Peut-on appeler, à partir d'un autre module, une fonction qui aurait '''frame''' entre parenthèse ?
'''Réponse :''' Non, car '''frame''' implique obligatoirement l'utilisation de la commande '''#invoke'''. Et cette commande ne peut pas être utilisée dans un module.
}}
Le contenu du module Ingère est :
Ligne 278 ⟶ 286 :
local p = {}
local t = require
function p.compo(frame)
Ligne 289 ⟶ 297 :
</syntaxhighlight>
'''<nowiki>{{#invoke:Ingère|compo|3}}</nowiki>''' nous donne alors : {{#invoke:Ingère|compo|3}}
== Priorité de l'interpréteur ==
|