什么是 newproxy,它有什么用处?

我昨天正在搞 Lua,发现了"newproxy"函数。

http://wiki.roblox.com/index.php?title=Function_dump/Basic_functions#newproxy

我有点理解它,但我不确定它有什么用处。我知道它会创建一个带有元表附加的空白用户数据对象(如果参数为true)。

newproxy有什么用?以下是我在乱搞时所做的示例:

local proxy = newproxy(true)
local metatable = getmetatable(proxy)

metatable.__index = function(array, key) print(array, key) end

local y = proxy[100]

--[[
    OUTPUT:
        userdata: 0x443ad4b4 100
]]
点赞
用户33252
用户33252

请查看这个相关的 SO 问题和答案。 在 Lua 中,空的 UserData 很有用,可以检测垃圾回收程序释放对象。 在 Lua 5.2 版本中,可以使用大小为零的表来扮演这个角色。

2014-10-02 01:36:48