IA
Size: a a a
IA
m
m
IA
mt = {}
mt.__close = function() print("close a") end
mt.__gc = function() print("gc a") end
local <toclose> a = {}
setmetatable(a, mt)
a = nil
Должно быть наоборот: gc a
close a
IA
IA
IA
local <toclose> a = {}IA
IA
IA
IA
function foo() mt = {}
mt.__close = function() print("close a") end
mt.__gc = function() print("gc a") end
local <toclose> a = {}
setmetatable(a, mt)
return a
end
local d = foo()
print("======")
Должно быть:
close a
=======
gc a
IA
__close() возникает, когда переменная выходит из области видимости, в данном случае при выходе из функцииIA
__gc() Она произойдёт в конце программыIA
__gc() не сработал, а __close() сработал