1.关于Lua Table的引用
当你使用一个临时变量存储一个table后,因为lua的table是传引用的,后续你对这个临时变量做的任何操作其实都是在操作这个table。
|
1 2 3 4 5 6 |
local tb = {name = 1} local tempTb = tb tempTb.name = 2 print(tb.name) --result 2 |
但是如果你直接替换临时变量指向的表,又不会对最初的表产生影响:
|
1 2 3 4 5 6 7 |
local tb1 = {name = 1} local tb2 = {name = 2} local tempTb = tb1 tempTb = tb2 print(tb1.name) --result 1 |
所以在替换表的时候,如果只是替换变量本身,其实是没有用的,比如下面例子中我想把inlineTb替换成一个新的table:
|
1 2 3 4 5 6 7 8 |
local tb = {name = 1, inlineTb = {name = 2}} local tempTb = tb tempTb = tempTb["inlineTb"] tempTb = {name = 3} print(tempTb.name) print(tb["inlineTb"].name) --result 3 2 |
想实现表的替换需要用表的上层表进行引用替换,如:
|
1 2 3 4 5 |
local tb = {name = 1, inlineTb = {name = 2}} tb["inlineTb"] = {name = 3} print(tb["inlineTb"].name) --result 3 |