日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Lua ipairs与pairs的区别

發布時間:2023/12/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua ipairs与pairs的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Lua ipairs與pairs的區別

  • 相同點和不同點
    • 相同點
    • 不同點:
  • 舉例說明
    • 測試代碼
    • 測試結果分析

相同點和不同點

相同點

  • ipairs和pairs一般都用來對table進行遍歷

不同點:

  • ipairs:ipairs是按key的順序遍歷的,從key = 1開始,對table按順序遍歷,如果key = 1有值,則會繼續訪問key = 2的值,如果key = 2有值,則會訪問key =3 的值,如此下去。但一旦沒有則會終止整個訪問流程。
  • pairs: 首先pairs在遍歷時,是無序的,并不會從小到大順序遍歷。但是pairs可以完整的遍歷整個table,并不會像ipairs一樣遇到nil就停下來。

舉例說明

測試代碼

tab = { [1] = 1, b = 2, c = 3,5,4,6}print("------------ipairs遍歷結果------------") for k,v in ipairs(tab) doprint(k..":"..v) endprint("------------pairs遍歷結果------------")for k,v in pairs(tab) doprint(k..":"..v) end

測試結果

------------ipairs遍歷結果------------ 1:5 2:4 3:6 ------------pairs遍歷結果------------ 1:5 2:4 3:6 c:3 b:2

測試結果分析

為什么會輸出這樣的結果呢。我們可以把table里的元素分為2種;

  • 1種是帶 鍵值對(key-value),如上面聲明的 [1] = 1, b = 2, c = 3 這3個元素;
  • 另外1種是 不帶鍵值對的,如剩下的4,5,6;

table會先存儲帶鍵值對的,然后再按順序存儲不帶鍵值對的.
1:首先存儲帶鍵值對的:

  • [1] = 1, b = 2, c = 3

2:接著存儲不帶鍵值對的 (存這種類型時,會從1開始自增,自動為其附上key),比如

  • [1] = 5, [2] = 4, [3] = 6

3: 遇到一樣的key時,會覆蓋掉先前的

  • 比如這里的 [1] = 1 就被 [1] = 5 覆蓋掉了

4:存儲后的結果

  • b = 2, c = 3, [1] = 5, [2] = 4, [3] = 6

看到存儲后的結果,現在我們直接去看ipairs和pairs打印出來的結果就很清晰了。是完全符合預期的。

總結

以上是生活随笔為你收集整理的Lua ipairs与pairs的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。