将更改表插入另一个表。当它们应该不同时,表值是相同的

时间:2014-05-18 02:52:46

标签: insert lua lua-table

我正在尝试在其中创建一个包含表格的表格。内部的表格与之前的值略有不同。但最终结果是主表中的表彼此相等并且等于其最新值。

local array = {}
local x 
local y

function test(a)
  if a==1 then
    x = {1,1}
    print("x returned")
    y = x
    for k,v in pairs(x) do print(k,v) end
    return x
  end

  if a>=1 then
    p=math.random(1,2)
    n=math.random(2,4)
    table.remove(y,p)
    table.insert(y,p,n)
    print("")
    print("y returned")
    for k,v in pairs(y) do print(k,v) end
    return y
  end

end


array[1] = test(1)
array[2] = test(2)
array[3] = test(3)

print("")
for k,v in pairs(array) do print(k,v) end
testtable=array[1]
print("")
for k,v in pairs(testtable) do print(k,v) end

输出:

x returned
1   1
2   1

y returned
1   1
2   3

y returned
1   1
2   4

1   table: 0x678300
2   table: 0x678300
3   table: 0x678300

1   1
2   4

array内的三个表应该彼此不同。我究竟做错了什么?桌子上有什么东西我不知道吗?

1 个答案:

答案 0 :(得分:2)

表是对象,表示变量不包含表的值。相反,它包含对表的引用。所以在函数test中,当你这样做时:

y = x

现在yx都引用同一个表格。这就是array内的三个表格相同的原因。

相关问题