ipairs 和pairs在lua中都是遍歷tbale的函數但是二者有差異函數
1.pairs遍歷table中的所有的key-vale 而ipairs會依據key的數值從1開始加1遞增遍歷相應的table[i]值lua
如:table1 = { key1 = "val1", key2 = "val2", "val3" }.net
pairs 會優先輸出沒有鍵的值,即先輸出"val3" ,再到key1 = "val1",再 key2 = "val2"。blog
ipairs 只會輸出沒有鍵的值。即只輸出"val3",其餘不會輸出。ip
pairs可以遍歷表中所有的key,並且除了迭代器自己以及遍歷表自己還可以返回nil;但是ipairs則不能返回nil,僅僅能返回數字0,假設遇到nil則退出。它僅僅能遍歷到表中出現的第一個不是整數的keytable
例程1:遍歷
a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}迭代器
for key, value in ipairs(a) dotab
print(key, value)數字
end
結果:
1 a1
2 a2
3 a3
例程2:
a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}
for key, value in pairs(a) do
print(key, value)
end
結果:
6 a5
2 a2
3 a3
1 a1
5 a4
例程3:
tab1 = { key1 = "val1", key2 = "val2", "val3" }
for k, v in pairs(tab1) do
print(k .. " - " .. v)
end
結果:
1 - val3
key1 - val1
key2 - val2
例程4
tab1 = { key1 = "val1", key2 = "val2", "val3" }
for k, v in ipairs(tab1) do
print(k .. " - " .. v)
end
結果:
1 - val3
---------------------
轉載於:
https://blog.csdn.net/zwj695535100/article/details/83040127