Metametoda __gc (garbage collection finalizer) acționează ca un destructor, fiind apelată automat de colectorul de gunoi chiar înainte ca memoria ocupată de tabelă sau userdata să fie eliberată.
local ResursaNativa = {}
ResursaNativa.__index = ResursaNativa
local mt = {
__gc = function(self)
if self.handle then
print("Eliberare automată resursă hardware: " .. self.eticheta)
-- Închidere conexiune C / file descriptor...
self.handle = nil
end
end
}
function ResursaNativa.deschide(eticheta)
return setmetatable({eticheta = eticheta, handle = true}, mt)
end
do
local res = ResursaNativa.deschide("Socket_TCP_8080")
end -- 'res' iese din domeniu aici
collectgarbage("collect") -- Forțează rularea GC -> se va afișa mesajul de eliberare
Siguranță: În Lua 5.2+, tabelele pot defini __gc direct în metatabelă înainte de atribuire, oferind o modalitate excelentă de a garanta închiderea fișierelor și a socket-urilor deschise.
Întrebări & Exemple de Cod:
Metametoda __gc în Lua: Destructori și Eliberarea Resurselor NativeAi o nelămurire despre utilizarea comenzii
Metametoda __gc în Lua: Destructori și Eliberarea Resurselor Nativesau 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.