Lua 垃圾收集器-__gc元方法

示例

5.2

lua中的对象被垃圾收集。有时,您需要释放一些资源,打印消息或在销毁(收集)对象时执行其他操作。为此,您可以使用元__gc方法,当对象被销毁时,该元方法将以对象作为参数进行调用。您可能会将此元方法视为一种析构函数。

此示例显示了__gc运行中的元方法。当分配给的内部表t被垃圾收集时,它将在被收集之前打印一条消息。同样,对于到达脚本末尾的外部表:

local meta =
{
    __gc = function(self)
        print("破坏自我: " .. self.name)
    end
}

local t = setmetatable({ name = "outer" }, meta)
do
    local t = { name = "inner" }
    setmetatable(t, meta)
end