【问题标题】:What is newproxy and how is it useful?什么是 newproxy,它有什么用处?
【发布时间】:2014-11-26 22:36:33
【问题描述】:

我昨天在玩 Lua,偶然发现了“newproxy”功能。

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

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

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

【问题讨论】:

  • 比表格稍微轻一些,并且支持一些在表格被再次删除之前不支持的元方法。
  • newproxy 在 Lua 5.1 中被弃用并在 Lua 5.2 中被移除。

标签: lua metatable


【解决方案1】:

请参阅this related SO question 并回答。空用户数据对于检测 GC 何时回收对象很有用。 Lua 5.2 中的零大小表可以扮演这个角色。

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 1970-01-01
    • 2012-05-15
    • 2010-10-22
    • 2018-04-13
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多