Lua 什么是newproxy?它如何有用?

Lua 什么是newproxy?它如何有用?,lua,metatable,Lua,Metatable,昨天我和Lua混在一起,偶然发现了“newproxy”函数 我有点理解,但我不确定它有多有用。我知道它会创建一个附加了元表的空userdata对象(如果参数为true) 它有多有用?下面是一个我在玩它时所做的示例: local proxy = newproxy(true) local metatable = getmetatable(proxy) metatable.__index = function(array, key) print(array, key) end local y =

昨天我和Lua混在一起,偶然发现了“newproxy”函数

我有点理解,但我不确定它有多有用。我知道它会创建一个附加了元表的空userdata对象(如果参数为true)

它有多有用?下面是一个我在玩它时所做的示例:

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
]]

请看并回答。空用户数据对于检测GC何时回收对象很有用。Lua5.2中的零大小表可以扮演这个角色。

比表轻一点,并且支持一些表上不支持的元方法,然后再次删除。
newproxy
在Lua5.1中被弃用,在Lua5.2中被删除。