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
以上,完。