1.問題產生的原因是,在一個循環里對table中的元素先進行置空操作,再進行增加新元素的操作,就會報這個錯誤。
2.比如下面的例子:(當中間的函數足夠復雜並進行封裝了的情況下,不會留意到存在這個問題)
t = {1,2} function remove_ele() t[1] = nil
end
function add_ele() t[3] = 3 --err:增加原來沒有的元素
--t[1] = 1 --correct:修改原有的元素
end
for k,v in pairs(t) do remove_ele() add_ele() end
以上,完。