pairs會遍歷table的所有鍵值對。
而ipairs就是固定地從key值1開始,下次key累加1進行遍歷,如果key對應的value不存在,就停止遍歷。順便說下,記憶也很簡單,帶i的就是根據integer key值從1開始遍歷的。
請看個例子。
tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"} for k,v in ipairs(tb) do print(k, v) end
輸出結果就是:
1 oh 2 my 3 god
因為tb不存在tb[4],所以遍歷到此為止了。
for k,v in pairs(tb) do print(k, v) end
輸出結果:
1 oh 2 my 3 god 6 world 5 hello
我們都能猜到,將輸出所有的內容。然而你發現輸出的順序跟你tb中的順序不同。
如果我們要按順序輸出怎么辦?辦法之一是:
for i = 1, #tb do if tb[i] then print(tb[i]) else end
當然,僅僅是個數組的話,ipairs也沒問題。