local function setmt__gc(t, mt)
local prox = newproxy(true)
getmetatable(prox).__gc = function() mt.__gc(t) end
t[prox] = true
return setmetatable(t, mt)
end
function ooo( o )
print(o[1])
end
mt = {__gc = ooo}
list = {}
for i = 1,3 do
list = setmt__gc({i,link = list}, mt)
end
list = nil
collectgarbage()
o = {x = "hi"}
mt = {__gc = function ( o )
print(o.x)
end}
setmt__gc(o,mt)
o = nil
collectgarbage()
do
local mt = {__gc = function ( o )
print("new cycle")
setmt__gc({},getmetatable(o))
end}
setmt__gc({},mt)
end
collectgarbage()
collectgarbage()
collectgarbage()
Lua5.1 非userdata __gc的使用方法
最新推荐文章于 2024-03-17 22:51:56 发布