Les langages / Lua / Portee et closures
Modules et scope
Les modules permettent d'organiser le code en fichiers séparés. Lua utilise 'require' pour charger des modules et 'local' pour contrôler la portée des variables. C'est essentiel pour créer des applications bien structurées.
Portée des variables (scope)
-- Variable globale (accessible partout)
variableGlobale = "Je suis globale"
-- Variable locale (limitée au bloc)
local variableLocale = "Je suis locale"
function testerScope()
print(variableGlobale) -- Accessible
-- print(variableLocale) -- Erreur! Pas accessible
local temp = "Temporaire"
print(temp)
end
testerScope()
-- print(temp) -- Erreur! temp n'existe pas ici
Créer un module simple
-- Fichier: math_utils.lua
local MathUtils = {}
function MathUtils.carre(x)
return x * x
end
function MathUtils.cube(x)
return x * x * x
end
function MathUtils.moyenne(...)
local args = {...}
local somme = 0
for i, v in ipairs(args) do
somme = somme + v
end
return somme / #args
end
return MathUtils
Utiliser un module
-- Charger le module
local MathUtils = require("math_utils")
-- Utiliser les fonctions du module
print(MathUtils.carre(5)) -- 25
print(MathUtils.cube(3)) -- 27
print(MathUtils.moyenne(10, 20, 30)) -- 20
-- Alias pour simplifier
local carre = MathUtils.carre
print(carre(7)) -- 49
Module avec données privées
-- Fichier: compteur.lua
local Compteur = {}
-- Variable privée (local)
local valeur = 0
-- Méthodes publiques
function Compteur.incrementer()
valeur = valeur + 1
end
function Compteur.decrementer()
valeur = valeur - 1
end
function Compteur.obtenir()
return valeur
end
function Compteur.reinitialiser()
valeur = 0
end
return Compteur
-- Utilisation:
-- local compteur = require("compteur")
-- compteur.incrementer()
-- print(compteur.obtenir()) -- 1
2 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
- Closure (fermeture) difficile 35 XP
- Module simple difficile 35 XP