ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别
1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table[i]值
如:table1 = { key1 = "val1", key2 = "val2", "val3" }
pairs 会优先输出没有键的值,即先输出"val3" ,再到key1 = "val1",再 key2 = "val2"。
ipairs 只会输出没有键的值。即只输出"val3",其他不会输出。
pairs能够遍历表中全部的key,而且除了迭代器本身以及遍历表本身还能够返回nil;可是ipairs则不能返回nil,仅仅能返回数字0,假设遇到nil则退出。它仅仅能遍历到表中出现的第一个不是整数的key
例程1:
a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5",}
for key, value in ipairs(a) do
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
原文地址:https://www.cnblogs.com/gd-luojialin/p/10962724.html