Funcțiile în Lua sunt valori de prim rang (First-Class Values). O funcție poate fi salvată într-o variabilă locală, pasată ca parametru către alte funcții sau returnată dintr-o funcție părinte. Atunci când o funcție internă accesează variabile locale din funcția exterioară (numite upvalues), ea formează o închidere lexicală (Closure).
Închideri lexicale și generatoare de contoare private
-- Generator de contoare cu stare privată încapsulată:
local function creeazaContor(valoareInitiala)
local contor = valoareInitiala or 0 -- variabilă locală privată (upvalue)
return function(pas)
pas = pas or 1
contor = contor + pas
return contor
end
end
local contorA = creeazaContor(10)
print(contorA()) -- 11
print(contorA(5)) -- 16
local contorB = creeazaContor(100)
print(contorB()) -- 101 (starea este complet independentă de contorA!)
-- Funcție cu număr variabil de parametri (Variadic function):
local function insumeaza(...)
local total = 0
-- Împachetăm argumentele într-un tabel sau iterăm prin select():
for _, numar in ipairs({...}) do
total = total + numar
end
return total
end
print("Suma numerelor este:", insumeaza(10, 20, 30, 40)) -- 100
Întrebări & Exemple de Cod:
Funcții, Închideri (Closures) și Argumente Variadice (…) în LuaAi o nelămurire despre utilizarea comenzii
Funcții, Închideri (Closures) și Argumente Variadice (…) în Luasau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.