Lua中ipairs和pairs的區別詳解

2022-06-13 08:09:13 字數 863 閱讀 3134

迭代器for遍歷table時,ipairs和pairs的區別:

區別一:ipairs遇到nil會停止,pairs會輸出nil值然後繼續下去

區別二:

local a = 

--for i,v in ipairs(a) do--print(v)--end

for k,v in pairs(a) do

print(k,v)

end

可見:ipairs並不會輸出table中儲存的鍵值對,會跳過鍵值對,然後順序輸出table中的值,遇到nil則會停止。

而pairs會輸出table中的鍵和鍵值對,先順序輸出值,再亂序(鍵的雜湊值)輸出鍵值對。

這是因為,table在儲存值的時候是按照順序的,但是在儲存鍵值對的時候是按照鍵的雜湊值儲存的,並不會按照鍵的字母順序或是數字順序儲存。

=》對於a來說,如果執行print(a[3]),輸出的結果也會是good。也就是說table並不會給鍵值對乙個索引值。

也就是說,ipairs知識按照索引值順序,列印出了table中有索引的資料,沒有索引值的不管。

而pairs是先按照索引值列印,列印完成後再按照鍵值對的鍵的雜湊值列印它的值。

所以,怎麼順序輸出乙個table裡面的鍵值對?

local tab =

functiongetlen(tab)

local len = 0

for _,v in pairs(tab) dolen = len + 1

endreturnlen

endlocalkey

for i=1,getlen(tab) dokey = "key"..i

print(key, tab[key])

end

範性for語義以及pair和ipairs的區別

詳情參考 lua手冊 1.範性for語義 在了解pair和ipair前先簡單了解下lua中的for迴圈,這裡只闡述範性for迴圈的語義,範性 for 在自己內部儲存迭代函式,實際上它儲存三個 值 迭代函式 狀態常量 控制變數。for的正規化如下 for indo end是以乙個或多個逗號分隔的變數名...

lua 中pairs 和 ipairs差別

ipairs 和pairs在lua中都是遍歷tbale的函式可是兩者有差別 1.pairs遍歷table中的全部的key vale 而ipairs會依據key的數值從1開始加1遞增遍歷相應的table i 值 pairs能夠遍歷表中全部的key,而且除了迭代器本身以及遍歷表本身還能夠返回nil 可是...

LUA中ipairs和pairs的區別

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