Lua中pairs和iparis的区别
程序员文章站
2024-03-17 23:32:52
...
pairs和iparis都是遍历table的函数,但是有区别。
paris会遍历所有key, 类似于js的for-in循环
如:
local map = {
[1] = "hello",
[2] = "world",
["username"] = "test",
[3] = "123",
[5] = "456"
}
for k, v in pairs(map) do
print("k=" .. k .. ", v=" .. v)
end
-- output:
k=5, v=456
k=1, v=hello
k=2, v=world
k=username, v=test
k=3, v=123
可以看到, 所有的key都遍历到了。
iparis只会从1开始,步进1, 中间不是数字的key忽略, 到第一个不连续的数字为止(不含)。
如:
local map = {
[1] = "hello",
[2] = "world",
["username"] = "test",
[3] = "123",
[5] = "456"
}
for i, v in ipairs(map) do
print("i=" .. i .. ", v=" .. v)
end
-- output
i=1, v=hello
i=2, v=world
i=3, v=123
如果key里没有1, 那就不会有任何输出:
否则
local map = {
-- [1] = "hello", -- 注意这里
[2] = "world",
["username"] = "test",
[3] = "123",
[5] = "456"
}
for i, v in ipairs(map) do
print("i=" .. i .. ", v=" .. v)
end
-- output(无输出)
-- 如果是这样的话
local map = {
-- [1] = "hello", -- 注意这里
[2] = "world",
["username"] = "test",
[3] = "123",
[5] = "456",
-- 比上边多加了这个
[1] = "678"
}
for i, v in ipairs(map) do
print("i=" .. i .. ", v=" .. v)
end
-- output
i=1, v=678
i=2, v=world
i=3, v=123
小小总结, 欢迎补充指正!
上一篇: Lua程序设计第4版第18章练习答案
下一篇: 先进先出淘汰算法