【问题标题】:Inserting a changing table into another table. Tables values are the same when they should be different将更改表插入另一个表。表值应该不同时是相同的
【发布时间】:2014-07-06 06:05:54
【问题描述】:

我正在尝试制作一张里面有桌子的桌子。进入内部的表格与之前的值略有不同。但最终结果是主表内的表彼此相等,并且等于其最新值。

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 里面的三个表应该是互不相同的。我究竟做错了什么?表有什么我不知道的吗?

【问题讨论】:

    标签: insert lua lua-table


    【解决方案1】:

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

    y = x
    

    现在yx 都引用同一个表。所以array里面的三个表是一样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多