« Initiation au Lua avec Scribunto/Gestion de l'environnement » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-quelqu'un +quelqu’un) |
m Robot : Remplacement de texte automatisé (- l'on + l’on ) |
||
Ligne 61 :
==== Gestion programmée de l'erreur ====
Comment remédier à ce problème ? Il nous suffit simplement d'éviter que la variable poids soit comparée à un nombre lorsqu'elle contient '''nil''' et que dans ce cas la fonction nous retourne un message d'erreur informant l'utilisatrice de l'erreur qu'elle a commise. Nous devons donc encore perfectionner notre programme en écrivant une nouvelle fonction '''p.alerte5''' qui met en œuvre ce que
<syntaxhighlight lang="lua">
Ligne 165 :
Cette façon d'écrire le programme, bien que fonctionnant parfaitement, n'est pas correcte. Pourquoi ?
En fait, lorsqu'on écrit '''frame.args[1]''', on fait appel à la valeur de x que nous a fourni l'utilisateur dans la commande #invoke et qui est donc quelque chose d'extérieur au programme. Allez chercher cette valeur met en œuvre des routines qui sont, à elles seules, des programmes qu’il faut appeler et exécuter. tout cela demande du temps. On comprend donc aisément qu'écrire quatre fois '''frame.args[1]''' va demander un temps d'exécution plus long que si
<syntaxhighlight lang="lua">
Ligne 180 :
</syntaxhighlight>
On pourrait, à ce niveau, être satisfait, de notre programme et penser que
<math>7x^4+5x^3+3x^2+x+2 = x(7x^3+5x^2+3x+1)+2 = x(x(7x^2+5x+3)+1)+2 = x(x(x(7x+5)+3)+1)+2</math>
Ligne 202 :
La question qui peut maintenant venir à l'esprit est la suivante : Supposons que
Pour cela, nous disposons d'une fonction préprogrammée qui se nomme '''os.clock''' et qui est capable de nous donner une approximation du temps d'exécution du programme que
<syntaxhighlight lang="lua">
Ligne 263 :
== 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'à l'intérieur du module où elles sont déclarées. Cette affirmation sous-entend que si
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 dans chaque module.
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 façons d'utiliser la fonction '''require''' selon que
==== Première façon : On souhaite récupérer des objets indépendants de la table p ====
Il est, bien sût, indispensable que les objets que
Prenons un exemple : Dans le [[module:Fonction]], nous avions écrit une fonction '''f''' qui élève un nombre au carré. Dans un autre [[module:Aspire]], essayons d'y inclure le module Fonction et de créer une fonction '''carre''' qui appelle la fonction '''f''' pour élever un nombre au carré :
Ligne 290 :
</syntaxhighlight>
La fonction '''require''' attend une chaîne de caractères. Nous avons donc dû mettre '''Module:Fonction''' entre guillemet. Ne pas oublier, aussi, le mot '''Module'''. Si
Ligne 296 :
Nous avons bien obtenu 7 au carré qui donne 49. On peut aussi vérifier que
==== Deuxième façon : L'objet que
C'est un peu comme si
Prenons un exemple : Dans un [[module:Ingère]] écrivons une fonction '''compo''' qui appelle la fonction '''p.cube''' se trouvant dans le [[module:Réservoir]]
Ligne 319 :
</syntaxhighlight>
La grosse différence avec ce que
{{Encart
|