2024年4月2日
Jerry
4302
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。由于 a 和 b 实际上引用同一个表对象,所以修改表 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
《学习笔记》
0
微信
支付宝
