【Lua】Lua中ipair和pair的區別


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也沒問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM