问题描述
我是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