Lua迭代器pairs与ipairs的区别

pairs

pairs 会输出 table 中的值和键值对,并且在输出的过程中先按顺序输出值,再乱序输出键值对。

ipairs

ipairs 并不会输出 table 中存储的键值对,会跳过键值对,然后按顺序输出 table 中的值。遇到 nil 结束遍历!

local testTbl = {"hello", num = 666, "world", nil, level = 100, "abc"}

for k, v in pairs(testTbl) do
    print(k .. " : " .. v)
end

-- 1 : hello
-- 2 : world
-- 4 : abc
-- level : 100
-- num : 666

for k, v in ipairs(testTbl) do
    print(k .. " : " .. v)
end

-- 1 : hello
-- 2 : world

ps:table 在存储值的时候是按照顺序存储的;但是在存储键值对的时候是按照键的哈希值存储的,并不会按照键的字母顺序或是数字顺序存储。

结论:

需要遍历 table 的时候直接用 pairs 完事儿,甭管 ipairs 了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fightsyj

您的鼓励将是我分享的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值