pairs 和 ipairs 的區別

2022-02-02 01:16:19 字數 1839 閱讀 1685

ipairs 在迭代過程中是會直接跳過所有手動設定key值的變數。pairs不會跳過手動設定key值的變數。

例項

tab = 

for i,v in pairs(tab) do

print(i,v)

end

輸出

112

23da cd

例項

tab = 

for i,v in ipairs(tab) do

print(i,v)

end

輸出

112

23d

如果遇到手動設定的key並且值為nil,那麼pairs和ipairs都會選擇跳過該元素

例如:

tab = 

for i,v in pairs(tab) do

print(i,v)

end

輸出

112

23 d

例項

tab = 

for i,v in ipairs(tab) do

print(i,v)

end

輸出

112

23 d

ipairs在迭代過程中如果遇到nil時會直接停止。pairs會選擇跳過。

例項tab =

for i,v in pairs(tab) do

print(i,v)

end輸出

1 12 2

4 d例項

tab = 

for i,v in ipairs(tab) do

print(i,v)

end

輸出1 1

2 2for 迴圈中,迴圈的索引 i 為外部索引,修改迴圈語句中的內部索引 i,不會影響迴圈次數

for i=1,10

doi = 10

print(

"one time,i:

"..i)

end

仍然迴圈 10 次,只是 i 的值被修改了

one time,i:10

one time,i:

10one time,i:

10one time,i:

10one time,i:

10one time,i:

10one time,i:

10one time,i:

10one time,i:

10one time,i:

10

pairs能迭代所有鍵值對。遇到nil不會停止,會直接跳過

tab = 

for i,v in pairs(tab) do

print(i,v)

end

輸出

112

24dv

5

ipairs只會迭代鍵為數字的鍵值對,遇到nil會停止

tab = 

for i,v in ipairs(tab) do

print(i,v)

end

輸出

112

23 d

總結

共同點:

遇到手動設定的值為nil的元素會跳過,如, tab =

不同點:

pairs遇到nil會跳過,ipairs遇到nil會停止 , 如,tab =

pairs能夠輸出手動設定的元素,ipairs只能輸出鍵值為整數的元素,如,tab =

LUA中ipairs和pairs的區別

在lua中,table的遍歷可以通過ipairs或pairs來完成,但是兩者的用法並非完全一樣的。ipairs只遍歷索引為數字的key value對,從下標1開始遞增 而pairs則會無序遍歷table中所有元素,字串索引 數字索引 函式等。因此,如果乙個table是乙個純陣列,那麼兩者遍歷的結果是...

Lua之pairs和ipairs的區別

之前看了其他前輩寫得關於pairs和ipairs的區別,覺得沒能夠很好抓住重點,所以這次因為複習的關係,我自己也寫了乙個。lua庫為泛型for迴圈提供了幾個迭代器函式 io.lines用於遍歷每行 pairs用於迭代table元素 ipairs用於迭代陣列元素 string.gmatch用於迭代字串...

Lua中pairs和ipairs的區別

在lua中有提供預設的迭代函式 pairs 和 ipairs,我們通常使用這兩個迭代函式來進行table的遍歷,那麼這兩個迭代函式的區別是什麼?首先,table儲存的值是連續的時候,兩個是沒有什麼區別的,如下 tab1 for k,v in ipairs tab1 do 使用ipairs進行遍歷 p...