2014-10-01 221 views
4

昨天我在和Lua搞混了,偶然發現了'newproxy'函數。什麼是newproxy,它有什麼用處?

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

我有點明白了,但我不知道它是如何有用。我知道它創建一個帶有metatable的空白userdata對象(如果參數爲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 
]] 
+0

http://lua-users.org/cgi-bin/wiki.pl?action=browse&id=HiddenFeatures&revision=15 – 2014-10-01 23:39:11

+0

稍微比表格輕一些,並支持表格在表格不被支持前不支持的一些元方法再次。 – Deduplicator 2014-10-01 23:56:45

+0

'newproxy'在Lua 5.1中被棄用,並在Lua 5.2中被刪除。 – lhf 2014-10-02 00:41:41

回答

0

this related SO question和答案。空的userdata對於檢測GC回收對象時非常有用。在Lua 5.2中,這個角色可以通過零大小的表來播放。