Metametoda __gc în Lua: Destructori și Eliberarea Resurselor Native în Lua

Sintaxă
__gc = function(self)

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.

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Metametoda __gc în Lua: Destructori și Eliberarea Resurselor Native

Ai o nelămurire despre utilizarea comenzii Metametoda __gc în Lua: Destructori și Eliberarea Resurselor Native 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.