値を割り当てているキーは、戻った後も nil のままです!
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 ] は nil のままです。出力は
666
xxx : 666
nil
666
編集:ええ、私は今気づきました。ネット帯域幅のため、後で賛成票を投じます(javascriptでstacを実行できません)ありがとう、今は動作します。前のオブジェクトに基づいて新しいオブジェクトを作成しました。