Lua Leçon 4
Les fonctions
Regrouper du code réutilisable, avec des paramètres et une ou plusieurs valeurs de retour.
À la fin de cette leçon, tu sauras
- Déclarer une fonction locale
- Renvoyer une ou plusieurs valeurs
- Passer une fonction en paramètre
Déclarer une fonction
local function saluer(prenom)
print("Bonjour " .. prenom .. " !")
end
local function ajouterArgent(solde, montant)
return solde + montant
end
saluer("Léa")
local nouveau = ajouterArgent(100, 50) -- 150Comme pour les variables, on écrit local function. return renvoie le résultat. Si on appelle une fonction avec moins d'arguments que prévu, les paramètres manquants valent nil.
Plusieurs valeurs de retour
Particularité de Lua : une fonction peut renvoyer plusieurs valeurs d'un coup.
local function minMax(a, b)
if a < b then
return a, b
end
return b, a
end
local petit, grand = minMax(8, 3)
print(petit, grand) -- 3 8Une fonction en paramètre
En Lua, une fonction est une valeur comme une autre : on peut la ranger dans une variable ou la donner à une autre fonction. C'est ce qui permet de réagir aux événements d'un jeu, comme on le verra dans la leçon suivante.
local function repeter(fois, action)
for i = 1, fois do
action(i)
end
end
repeter(3, function(n)
print("Appel numéro " .. n)
end)Astuce : une fonction écrite directement à l'endroit où on l'utilise, sans nom, s'appelle une fonction anonyme.
À toi de jouer
Écris une fonction locale soigner qui prend deux paramètres, vie et soin, et qui renvoie la nouvelle vie, sans dépasser 100. Indice : math.min(100, vie + soin) renvoie le plus petit des deux nombres. Affiche ensuite le résultat de soigner(80, 30).
- Une fonction locale soigner(vie, soin) est déclarée
- Elle renvoie une valeur avec return
- La vie ne dépasse pas 100
- Le résultat de soigner(80, 30) est affiché
- La fonction est fermée par end
Bravo, toutes les consignes sont réussies !
Bloqué ? Voir une solution
local function soigner(vie, soin)
return math.min(100, vie + soin)
end
print(soigner(80, 30))