欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

小小总结, 欢迎补充指正!