測試代碼如下:
local tab= {
[1] = "a",
[2] = "b",
[5] = "c" ,
[6] = "d" ,
[15] = "e",
[16] = "f" ,
[17] = "g",
[100] = "h"
}
for i,v in pairs(tab) do
print( i,tab[i] )
end
運行結果如下:
5 c
1 a
100 h
2 b
17 g
16 f
15 e
6 d
原因:
table的值有兩種儲存方式:線性列表List和字典Dictionary。
列表用ipairs迭代,因爲它是順序遍歷的。
字典用ipairs迭代,因爲它是按鍵值對方式遍歷的。
由於鍵值對方式不是順序存取的,所以table中即使是順序排列也可能亂序輸出。
另外,table中的數據的插入方式不同,也會影響數據在表中的排序。
比如 tab[index] = value 和 table.insert(tab,value) ,前者數據順序跟插入的先後有關,不一定與index相同,而後者則是按順序從後插入。
參考文章: