Aller au contenu principal
ShadowAcademy

Les langages / Lua / Fonctions

Fonctions

Les fonctions sont des blocs de code réutilisables. En Lua, les fonctions sont des valeurs de première classe: elles peuvent être stockées dans des variables, passées en paramètres et retournées.

Déclaration et appel de fonctions

-- Fonction simple
function direBonjour()
  print("Bonjour!")
end

direBonjour()

-- Fonction avec paramètres
function saluer(nom)
  print("Bonjour, " .. nom .. "!")
end

saluer("Shadow")

-- Fonction locale
local function additionner(a, b)
  return a + b
end

local resultat = additionner(5, 3)
print("Résultat: " .. resultat)

Valeurs de retour multiples

-- Retourner plusieurs valeurs
function obtenirCoordonnees()
  return 10, 20, 30
end

local x, y, z = obtenirCoordonnees()
print("X:", x, "Y:", y, "Z:", z)

-- Fonction de calcul
function diviser(a, b)
  if b == 0 then
    return nil, "Division par zéro!"
  end
  return a / b, "Succès"
end

local resultat, message = diviser(10, 2)
print(resultat, message)

Paramètres variables

-- Nombre variable d'arguments
function somme(...)
  local total = 0
  for i, v in ipairs({...}) do
    total = total + v
  end
  return total
end

print(somme(1, 2, 3))        -- 6
print(somme(10, 20, 30, 40)) -- 100

-- Afficher tous les arguments
function afficherArgs(...)
  local args = {...}
  print("Nombre d'arguments:", #args)
  for i, v in ipairs(args) do
    print(i, v)
  end
end

afficherArgs("A", "B", "C")

Fonctions anonymes et closures

-- Fonction anonyme
local multiplier = function(x, y)
  return x * y
end

print(multiplier(4, 5))

-- Closure (capture de variable)
function creerCompteur()
  local compte = 0
  return function()
    compte = compte + 1
    return compte
  end
end

local compteur = creerCompteur()
print(compteur())  -- 1
print(compteur())  -- 2
print(compteur())  -- 3

8 exercices pour cette lecon

Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte

  • Fonction simple facile 10 XP
  • Fonction avec paramètre facile 10 XP
  • Fonction avec return facile 10 XP
  • Fonction avec plusieurs paramètres moyen 20 XP
  • Fonction avec valeur par défaut moyen 20 XP
  • Fonction avec plusieurs retours moyen 20 XP
  • Fonction récursive moyen 20 XP
  • Fonction variadique difficile 35 XP