所以我知道,如果表的元表不包含我引用的变量,lua 会查找它,但是当我尝试设置表中尚不存在的变量时,它将它设置在元表中,这似乎是错误的.
这是我的意思的一个例子
a = {__index = {tbl1 = {var = 1}, tbl2 = {var = 2}}}
b = setmetatable({}, a)
print(b.tbl1.var, a.__index.tbl1.var)
b.tbl1.var = 2
print(b.tbl1.var, a.__index.tbl1.var)
在此代码中,它将替换 metatables 变量,而不是将其设置在我引用的表中。
但是,此代码不会发生这种情况
a = {__index = {4, 5, 6}}
b = setmetatable({}, a)
print(b[1], a.__index[1])
b[1] = 2
print(b[1], a.__index[1])
使用元表和嵌套表时是否需要做更多工作?或者有没有办法解决这个问题?