Lua表的引用特征、Lua表的赋值、Lua表的移除
local table_a = {'A','B','C'}
local table_b = table_a
table.insert(table_b,'D')
table.insert(table_a,'E')
table_a = nil
for k,v in pairs(table_b) do
print('k=',k,' v=',v)
end
--[[ 输出
k= 1 v= A
k= 2 v= B
k= 3 v= C
k= 4 v= D
k= 5 v= E
]]
分析,建立一张table_a表,并向其中插入‘A’、‘B’、‘C’三个字符,将table_a赋值给table_b,再向table_b插入字符’D’,紧接着向table_a插入字符’E’,把table_a表移除,打印出table_b表,可以看出,把所以字符都打印出来了。
当创建了table_a表的时候,会创建一个存储区域,并且返回一个指向该存储区域的指针给table_a这个变量,然后再让table_b这个变量也指向了该存储区域,这样一来,不管操作table_a还是操作table_b,都能实现向存储区域增删改查,当把其中一个指针table_a移除时,存储区域不会消失,还能通过指针table_b操作,当table_b也移除时,才会触发lua的回收机制,将存储区域回收。