« Initiation au Lua avec Scribunto/Gestion de l'environnement » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 54 :
 
'''<nowiki>{{#invoke:Balance|alerte4|cinquante-six}}</nowiki>''', elle obtiendra alors : {{#invoke:Balance|alerte4|cinquante-six}}
 
 
Que c'est-il passé. En fait, rien de bien compliqué, nous avons vu, dans le chapitre exposant les fonctions préprogrammées de base, que la fonction '''tonumber''' ne comprenait pas le français et était incapable de convertir la chaîne de caractère "cinquante-six" en nombre 56. Et dans ce cas là, elle nous retourne '''nil'''. par conséquent la variable poids contenais '''nil''' au moment où elle a été comparée au nombre 55, ce qui a provoqué l'erreur de script.
 
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 oeuvre ce que l'on vient de dire :
 
<syntaxhighlight lang="lua">
 
local p = {}
 
function p.alerte5(frame)
local poids = tonumber(frame.args[1])
local reponse
if poids == nil then
reponse = "Vous n'avez pas rentré un nombre"
else
if poids < 55 then
reponse = "Votre poids est acceptable"
else
if poids < 60 then
reponse = "Attention, vous commencez à grossir !"
else
reponse = "Grosse vache !!"
end
end
end
return reponse
end
 
return p
 
</syntaxhighlight>
 
Testons cette nouvelle fonction :
 
En écrivant :
 
'''<nowiki>{{#invoke:Balance|alerte5|56}}</nowiki>''', nous obtenons : {{#invoke:Balance|alerte5|56}}
 
Et en écrivant :
 
'''<nowiki>{{#invoke:Balance|alerte5|cinquante-six}}</nowiki>''', nous obtenons : {{#invoke:Balance|alerte5|cinquante-six}}
 
== Comment utiliser des fonctions écrites dans un autre module ==