Lua中刪除table的一個元素一般通過賦值nil完成。通常,我們理解數組中刪除一個元素,以后訪問的時候下標仍然是從0,1,2,3開始的。Lua的table可以表示數組,下標為1,2,3,4...,然而刪除里面的元素與再次訪問它時要特別小心,因為你不能仍然認為下標是1,2,3,4...
例一
1 function print_t(t) 2 for k,v in pairs(t) do 3 print(k,v) 4 end 5 end 6 7 t={1,2,3,4,5} 8 9 print_t(t) 10 print('--------------------') 11 12 t[1]=nil 13 print_t(t)
簡單的把第一個元素賦值為nil,輸出是

可以看到,key是2,3,4,5
稍微改動一下,看看ipairs的效果
例二
1 function print_t(t) 2 for k,v in ipairs(t) do--使用ipairs 3 print(k,v) 4 end 5 end 6 7 t={1,2,3,4,5} 8 9 print_t(t) 10 print('--------------------') 11 12 t[1]=nil 13 print_t(t)
運行結果如下

根本不能訪問得到元素了。如果還想當然以為會取到2,3,4,5的值,就大錯特錯了。
