问题可以概括如下:
a.b = nil -- a是一个lua table
print(a.b == nil)
--输出
false
熟悉lua的可能已经猜到了,metatable导致的,写了个测试
local a = {t = 3}
local b = {t = 1}
setmetatable(b ,{__index = a})
print(b.t)
b.t = nil
print(b.t)
--输出
1
3
果不其然,整个过程是:在b.t = nil 后取b.t 时取不到,就去找metatable中的a了,找到了是3
总结:
这种问题在有类继承的地方会出现,但一般都是声明或使用字段不当导致的