Funcțiile debug.getupvalue și debug.setupvalue permit citirea și modificarea variabilelor externe capturate (upvalues) din interiorul unei închideri lexicale (closure).
local function creeazaContor(valoareInitiala)
local contor = valoareInitiala -- upvalue
return function()
contor = contor + 1
return contor
end
end
local c = creeazaContor(10)
-- Citirea upvalue-ului numărul 1:
local nume, valoare = debug.getupvalue(c, 1)
print(string.format("Upvalue găsit: %s = %s", nume, tostring(valoare))) -- contor = 10
-- Modificarea directă a stării interne fără apelare:
debug.setupvalue(c, 1, 100)
print(c()) -- 101 (a pornit de la valoarea modificată 100)
Aplicabilitate: Utilizat pe scară largă în framework-uri de testare unitară (mocking de variabile private) și serializarea stărilor funcționale.
Întrebări & Exemple de Cod:
debug.getupvalue și debug.setupvalue în Lua: Introspecția ClosuresAi o nelămurire despre utilizarea comenzii
debug.getupvalue și debug.setupvalue în Lua: Introspecția Closuressau 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.