我正在尝试插入一系列具有由函数生成的值的表。我注意到生成的表都具有相同的地址,因此在我的程序中仅识别最近生成的表。
下面代表主程序从中获取的文件中的代码。
a.lua
local a = {}
local b = {}
b.x = 0
b.y = 0
b.z = 'Static'
function a.new(x, y)
b.x = x
b.y = y
return b
end
下面是上述代码的实现示例。
b.lua
a = require 'a'
d = {}
table.insert(d, a.new(1, 2))
table.insert(d, a.new(2, 3))
a.new 生成的表都具有相同的地址(即 0x0000001)。因此,最后一个 table.insert 会覆盖之前生成的表,并且“d”表中的各个条目都指向同一位置。
我怎样才能以这种方式生成具有唯一地址的表?
b需要这样还是可以简单地像这样修改a.lua?
local a = {}
function a.new(x, y)
x = x or 0
y = y or 0
local b = {}
b.x = x
b.y = y
b.z = 'Static'
return b
end