首页 > 解决方案 > Lua中的构造函数和析构函数?

问题描述

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

标签: constructorluaprogramming-languagesdestructor

解决方案


构造函数是创建对象并返回它的任何函数。要定义析构函数,您需要一个带有__gcmetamethod的元表。元方法将__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

推荐阅读