Lua中,泛型for循环遍历table时,ipairs和pairs的区别
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Lua中,泛型for循环遍历table时,ipairs和pairs的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                根據table型變量key是否為連續數字,如果是則稱為數組型table,如果不是則稱為非數組型table.
事實勝于雄辯,接下來通過實驗來區分兩組迭代器的區別.
首先給出pairs和ipairs在數組型table和非數組型table中的遍歷效果:? ?
local testTable1 = {"a","b","c","d","e"}local testTable2 = {[1] = "a",["x"] = "b",["y"] = "c",[2] = "d",[8] = "e"}print("pairs output arrayTable:")for i,v in pairs(testTable1) doprint(i,v)endprint("-----------------------------")print("ipairs output arrayTable:")for i,v in ipairs(testTable1) doprint(i,v)endprint("-----------------------------")print("pairs output not arrayTable:") for i,v in pairs(testTable2) doprint(i,v)endprint("-----------------------------")print("ipairs output not arrayTable:")for i,v in ipairs(testTable2) doprint(i,v)end
 總結:
遍歷數組型(連續數字下標)table時,pairs和ipairs效果相同
遍歷非數組型(數字字母混合,或者非連續數字)table時:
pairs:先輸出數字類型key的鍵值(按照key的出現順序),再輸出字母類型key的鍵值(無序)
ipairs:從第一個數字key開始,依次輸出所有的key+1的鍵值,遇到字母下標并不會結束遍歷,只是不輸出而已.
從效果上看,pairs完全包括了ipairs的能力
通常遍歷table的需求是:不考慮table是數組型table還是非數組型table,遍歷table中的鍵值
那么這種情況全部使用pairs即可遍歷table.
 ————————————————
 原文鏈接:https://blog.csdn.net/ellis1970/article/details/80693314
總結
以上是生活随笔為你收集整理的Lua中,泛型for循环遍历table时,ipairs和pairs的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 浅谈学术论文rebuttal
- 下一篇: torch.squeeze用法
