我分配值的键在返回后仍然为零!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