Lua 中的构造函数和析构函数?

Constructors and Destructors in Lua?

我是 Lua 的新手,通过将它们与 Python 和 Java 等其他编程语言进行比较来学习一些概念。我知道 Java 和 python 都有构造函数和析构函数。但是没找到纯Lua写的。我已经看到一些使用 C/C++ 和 Lua 作为构造函数的示例,但是有没有什么方法可以只用 Lua 语言制作构造函数和析构函数?

构造函数是创建对象并 returns 它的任何函数。要定义析构函数,您需要一个带有 __gc metamethod 的元表。 __gc 元方法将在对象为 garbage-collected 或程序结束时调用。

local mt = {
  -- Destructor
  __gc = function(self)
    print('Garbage-collecting ' .. self.name)
  end,
}

-- Constructor
local function newObject(name)
  local o = {name = name}
  setmetatable(o, mt)
  return o
end