Funcții, Închideri (Closures) și Argumente Variadice (…) în Lua în Lua

Ghid complet pentru funcții în Lua: funcții anonime, stocarea stării în închideri (closures), returnarea multiplă de valori și procesarea argumentelor variabile cu '...'.

Sintaxă
local function f(a, b, ...) return a + b, ... end

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
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Funcții, Închideri (Closures) și Argumente Variadice (…) în Lua

Ai o nelămurire despre utilizarea comenzii Funcții, Închideri (Closures) și Argumente Variadice (…) în Lua sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.