返回后我分配值的键仍然为零!
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[ key ] 仍然保持为零。输出是
666
xxx : 666
nil
666
编辑:是的,我刚刚意识到。由于网络带宽(无法使用 javascript 运行 stac),我稍后会给你投票。谢谢,现在它可以工作了。根据前一个对象创建新对象。