虽然lua的table可以当作数组运用,但是在赋值的时候,不是单纯的把值赋值到另一个table,而是把另一个table当作此table的引用,这时候需要使用clone函数,举例如下:
-- example:
-- 1. t2是t1引用,修改t2时,t1会跟着改变
local t1 = { a = 1, b = 2 }
local t2 = t1
t2.b = 3 -- t1 = { a = 1, b = 3 } == t1.b跟着改变
-- 2. clone() 返回t1副本,修改t2,t1不会跟踪改变
local t1 = { a = 1, b = 2 }
local t2 = clone( t1 )
t2.b = 3 -- t1 = { a = 1, b = 2 } == t1.b不跟着改变
Lua中Table的引用与Clone
本文通过两个示例详细解释了Lua语言中Table作为数组使用时,直接赋值会导致引用而非复制的问题,并介绍了如何使用clone函数来创建独立的Table副本。
1825

被折叠的 条评论
为什么被折叠?



