Lua中的建设者与破坏者?

问题描述

我是Lua的新手,通过将它们与其他编程语言(例如Python和Java)进行比较来学习一些概念。我知道Java和python都有构造函数和析构函数。但是我没有找到用纯Lua编写的代码。我已经看到一些使用C / C ++和Lua进行构造的示例,但是有没有办法仅用Lua语言来构造和构造析构函数

解决方法

构造函数是创建对象并返回对象的任何函数。要定义析构函数,您需要一个带有__gc metamethod的元表。 __gc元方法将在对象被垃圾回收时或在程序结束时被调用。

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