避免表的表在插入另一个表时保持相同的内存分配

问题描述 投票:0回答:1

在Lua 5.3中,我有一个表

t1
,其中只有一个表,后一个表仅包含一个键
[key]
,指向值
1

t1 = {{key = 1}}

我的目标是将内部表复制并插入到空的第二个表

t2
,然后仅操作 t2 内表的值。但是,当尝试使用下面的代码执行此操作时,表 t1 中的表也会受到影响,这是不希望的。我猜测这是因为
{key = 1}
是一个表,在 t1 和 t2 中都指向内存中的同一位置,这是不希望的。有什么推荐的方法可以避免这种情况?

提前致谢。

local t1 = {{key = 1}}
local t2 = {}
table.insert(t2,t1[1])
t2[1].key = t2[1].key + 1
print(t1[1].key, t2[1].key)

结果:

2  2

预期:

1  2
memory lua lua-table
1个回答
0
投票

因为

赋值、参数传递和函数返回总是可操作的 对此类价值观的引用;这些操作并不意味着任何类型的 复制。

https://www.lua.org/manual/5.3/manual.html#2.1

© www.soinside.com 2019 - 2024. All rights reserved.