Lua Table 的引用,踩坑记

2019-05-12 15:34:51
收藏数:0
阅读数:234
评论数:0

Lua Table 引用

引用示例

local m = {
    foo = 'bar'
}

local test = m

m.foo = 'foo'

print(test.foo) -- output: foo

由于 lua 对 table 的设计,赋值都是指针型赋值的从而导致了这个问题,这种做法在存储上是有优势的,我们这里只对本身需要深拷贝的 table 进行处理

解决办法

官方推荐的做法

local m = {
    foo = 'bar'
}

local test = {table.unpack(m)} -- 通过重新构成一个 table ,再使用 unpack 填充新 table 实现深拷贝

m.foo = 'foo'

print(test.foo) -- output: bar