lua中的table复制问题

2024年4月2日 Jerry 142 2024年4月2日

在 Lua 中,当你将一个表(table)赋值给另一个变量时,实际上是将表的引用(reference)赋给了新的变量,而不是复制表的内容。这意味着,原始表和新的变量都指向同一个表对象。因此,如果你修改了原始表,新的变量也会反映出这些修改,因为它们实际上是同一个表的引用。

下面是一个示例来说明这一点:

local a = {1, 2, 3}
local b = a

a[1] = 10

print(a[1])  -- 输出: 10
print(b[1])  -- 输出: 10

在这个示例中,我们将表 {1, 2, 3} 赋值给变量 a。然后,我们将变量 a 的值赋给变量 b。在之后,我们修改了表 a 的第一个元素为 10。由于 ab 实际上引用同一个表对象,所以修改表 a 会影响到变量 b,因此 b[1] 也变成了 10。

如果你希望复制表的内容而不是引用,可以使用 table.clone 函数或者其他方式来进行深拷贝。下面是一个使用 table.clone 函数的示例:

local a = {1, 2, 3}
local b = table.clone(a)

a[1] = 10

print(a[1])  -- 输出: 10
print(b[1])  -- 输出: 1

在这个示例中,我们使用 table.clone 函数来创建一个表 b,它是表 a 的深拷贝。对表 a 的修改不会影响到表 b,因为它们是两个独立的表对象。


原创文章,转载请注明出处: https://jerrycoding.com/article/lua-table-copy

微信
jerry微信赞助
支付宝
jerry支付宝赞助

您尚未登录,暂时无法评论。请先 登录 或者 注册

0 人参与 | 0 条评论