首页 > 代码库 > lua中pairs和ipairs的区别
lua中pairs和ipairs的区别
主要在有key为整数的时候有区别.
注意数组默认的下标从1开始,比如a={"a","b","c","d"},和a={[1]="a",[2]="b",[3]="c",[4]="d"}是一样的.
local a = { "a","b","c","d" } for k, v in pairs(a) do print(k, v) end
所以ipair和pairs的结果都是
1 a
2 b
3 c
4 d
但是如果数组中的key和从1开始数的key不相同的话,或者是非整数,ipairs就此break,pairs不受影响.
local a = { "a",[2]="b",[4]="c",[5]="d" } for k, v in pairs(a) do print(k, v) end
pairs输出
1 a
2 b
4 c
5 d
ipairs输出
1 a
2 b
应为"c"的key不是3,所以就中断了
以及
for k,v in pairs(a) do print(k,v) end
也不会输出的
还有一点需要注意的是,数组的自动排序功能
如果改成这样
local a = { "a",[2]="b",[4]="c","d" } for k, v in pairs(a) do print(k, v) end
pairs输出
1 a
2 d
4 c
因为自动排序,先按照没key的给默认key,所以就变成{[1]="a",[2]="d",[2]="b",[4]="c"}
前面的[2]="d"会移除掉后面的,[2]="b",所以没有输出b
如果是pairs
1 a
2 d
应为[2]="b"被移除,[4]="c"不等于3,所以只输出
1 a
2 d
lua中pairs和ipairs的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。