lua中的table复制问题

2024年4月2日 Jerry 5121 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 条评论

每日一句 (From ONE)
梦里不知身是客,醒来也未必清醒。在梦中流过的泪、迷恋过的人、经过的地方,会在心底留痕。谁说梦境不过虚幻,梦是现实的另一种语言。我们认定的“现实”,也许只是某个更漫长的梦里,还未醒来的片段。

本周,ONE与你一同游走于梦境与现实之间——也许,两边都是真的。
微信扫码

扫一扫关注我

关于本站