Câmpul __mode dintr-o metatabelă transformă tabela respectivă într-o tabelă cu referințe slabe (weak table). În aceste tabele, cheile sau valorile pot fi colectate de Garbage Collector dacă nu mai există alte referințe puternice către ele.
-- Cache memoizat cu valori slabe (weak values)
local cacheRezultate = setmetatable({}, { __mode = "v" })
local function calculeazaHeavy(id)
if cacheRezultate[id] then
return cacheRezultate[id]
end
local rezultat = {val = id * 100, timestamp = os.time()}
cacheRezultate[id] = rezultat
return rezultat
end
local r1 = calculeazaHeavy(1)
print(cacheRezultate[1].val) -- 100
r1 = nil -- Eliminăm singura referință puternică din program
collectgarbage("collect") -- GC colectează obiectul din tabela slabă
print(cacheRezultate[1]) -- nil (a fost curățat automat din cache!)
Configurări posibile: __mode = "k" (chei slabe), __mode = "v" (valori slabe), __mode = "kv" (atât cheile cât și valorile sunt slabe).
Întrebări & Exemple de Cod:
Metametoda __mode în Lua: Tabele Slabe (Weak Tables) și MemorieAi o nelămurire despre utilizarea comenzii
Metametoda __mode în Lua: Tabele Slabe (Weak Tables) și Memoriesau 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.