我分配值的鍵在返回後仍然爲零!Lua:表格元素不希望在值存在時被複制
p = {};
for i = 0, 1000 do
p[ i ] = {};
end
t = {}
t.__index = t
function new()
local o = setmetatable({}, t)
for key, value in pairs(p[1]) do
print(key .. " : " .. value)
o[ key ] = value
end
t.__newindex = function(t, key, value)
if type(value) ~= "function" then
p[1][key] = value
end
end
return o
end
local something = new()
something.xxx = 666
print(p[1].xxx)
local something = new()
print(something.xxx)
print(p[1].xxx)
的問題是它:
for key, value in pairs(p[1]) do
print(key .. " : " .. value)
o[ key ] = value
end
這說明XXX:666,但問題o [關鍵]仍爲零,當我返回。輸出是
666
xxx : 666
nil
666
編輯:是的,我剛纔意識到。由於淨帶寬,我會給你upvotes(不能運行與JavaScript的stac)謝謝,現在它的作品。基於前一個創建新的對象。
爲什麼在每次調用new時都設置't .__ newindex'? – idoby