Lua 弱引用

标签 lua lua-table

我知道 Lua 中的弱表功能,但是我想对单个变量进行弱引用。

我见过this proposal它建议一个 API 如下:

-- creation
ref = weakref(obj)
-- dereference
obj = ref()

这看起来很理想。但是,这似乎不在其他地方的文档中;只有弱表。

有没有类似于 Python 的 weak reference to object功能?

最佳答案

我相信这样的事情可以做你想做的事:

local obj = {value = "obj.value"}

local ref = setmetatable({real = obj}, {__mode = "v", __call = function(self) return self.real end})

print(obj.value)
print(ref.real.value)
print(ref().value)

obj = nil
collectgarbage()
collectgarbage()

print(obj)
print(ref.real)
print(ref())
__call部分是可选的,但为您提供 ref()调用语法。没有它,您必须使用直接访问版本。

关于Lua 弱引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109670/

相关文章:

Lua重载运算符来创建假数组

animation - Love2D/Lua 动画系统和表格

Lua 表转换

memory - Lua 表 : how to assign value not address?

optimization - 表访问 vs 函数调用 + 条件判断 : which is faster?

list - Lua - 如何识别一个列表中的任何值不存在于另一个列表中的位置

nginx - access_by_lua 和 content_by_lua 引用 nginx.conf 中的 lua 脚本有什么区别?

lua - 如何检查两个表(对象)在Lua中是否具有相同的值

lua - 无法确定此文件的Lua格式

database - 在 LUA 中创建 sqlite3 数据库