lua中, pairs和ipairs的区别
程序员文章站
2024-03-17 23:32:34
...
函数pairs和ipairs都是实现遍历功能的函数,通常使用方法是和for函数共同使用构造for u,v in pairs/ipairs(t)实现遍历t表中的所有元素对。
区别在于,pairs可以遍历到表中所有的key,对于key的类型没有要求,遇到nil时可以跳过,不会影响后面的遍历
ipairs遍历时只能取key为整数值,遇到nil时终止遍历
代码来了!
1.当表中的元素对key值均为默认时,pairs和ipairs遍历结果相同(pairs遍历结果中元素对顺序可能改变)
testTable =
{
"js",
"lua",
"python",
"c++"
}
for k,v in pairs(testTable) do
print(k,v)
end
print("----------------")
for k,v in ipairs(testTable) do
print(k,v)
end
结果:
F:\>lua test.lua
1 js
2 lua
3 python
4 c++
----------------
1 js
2 lua
3 python
4 c++
2.当表中加入了nil后,pairs不受影响,ipairs从nil处终止
testTable =
{
"js",
"lua",
"python",
nil,
"c++"
}
for k,v in pairs(testTable) do
print(k,v)
end
print("----------------")
for k,v in ipairs(testTable) do
print(k,v)
end
结果:
F:\>lua test.lua
1 js
2 lua
3 python
5 c++
----------------
1 js
2 lua
3 python
3.在表中加入了key值不为整数型的元素对后,pairs不受影响,ipairs则无法取到这个key
testTable =
{
"js",
"lua",
"python",
this = "C#",
"c++"
}
for k,v in pairs(testTable) do
print(k,v)
end
print("----------------")
for k,v in ipairs(testTable) do
print(k,v)
end
结果
F:\>lua test.lua
1 js
2 lua
3 python
4 c++
this C#
----------------
1 js
2 lua
3 python
4 c++
上一篇: 插入排序与归并排序
下一篇: Lua程序设计第4版第18章练习答案