constructor - 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
推荐阅读
- javascript - 我可以在一行中重新导出默认值和命名变量吗?
- karate - 空手道模拟是否支持匹配条件的“包含”语法?
- ios - 如何使用 Swift 在我的应用程序中使用 SwiftMessage cocoapod?
- sql - 每组选择一行
- java - 扩展 crud 存储库时如何使用自己的查询进行保存操作?
- angular - Angular:更改使用 Typescript 选择的 KendoDropdown 数据
- react-native - react native导出默认多组件
- google-apps-script - 要触发的 Google Apps 脚本最新表单响应 -
- excel - 如果问题是动态的 - 逻辑值变成动态的
- c# - Windows 窗体 C# 标签 backColor 更改问题