問題可以概括如下:
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
總結:
這種問題在有類繼承的地方會出現,但一般都是聲明或使用字段不當導緻的