pairs和ipairs的区别

本文详细介绍了Lua中的ipairs和pairs函数在遍历表时的不同之处。ipairs按照数字键顺序遍历,遇到不连续的数字键或nil停止;pairs无序遍历所有键值对,包括字符串键,遇到nil不终止。通过多个示例展示了两者的具体行为,揭示了在实际使用中如何选择适合的遍历方式。
摘要由CSDN通过智能技术生成

在lua中ipairs 和pairs均可以用来遍历集合,但是两者有区别;

同:都是能遍历集合(表、数组),两者均优先按顺序输出没有key的值;

异:对于有key的集合:
ipairs从第一个数字key开始,依次输出所有的key+1的键值,遇到字母下标并不会结束遍历,只是不输出而已,如果遇到nil则退出;
pairs无序输出字母类型key或者数字类型key的键值,遇到nil不输出,但不会停止遍历;

例子1:

table = { [1] = "test3", [2] = "val1" , [5] = "val2", [4] = "val4" }
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end

输出

-----------ipairs----------------
1	test3
2	val1
-----------pairs----------------
4	val4
1	test3
2	val1
5	val2

结论:
1、ipairs会按照key的顺序输出数据,遇到不连续的数据停止输出;
2、pairs会无序输出所有数据;

例子2:

table = { [3] = "test3", ["test"] = "val1", "val3" , [4] = "val2", "val4" }
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end

输出

-----------ipairs----------------
1	val3
2	val4
3	test3
4	val2
-----------pairs----------------
1	val3
2	val4
4	val2
test	val1
3	test3

结论:
1、pairs和ipairs均优先输出没有key的value;
2、pairs会输出所有的数据,不带key的值按顺序输出,带key的值无序输出;
3、ipairs会跳过字符串的key,按顺序输出数字型key的值;

例子3

table = { [6] = "test3", ["test"] = "val1", "val3" , [11] = "val2", nil, "val4" }
print("-----------ipairs----------------")
for k,v in ipairs(table) do
    print(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) do
    print(k,v)
end

输出

-----------ipairs----------------
1	val3
-----------pairs----------------
1	val3
3	val4
11	val2
6	test3
test	val1

结论:
1、ipairs遇到nil会停止输出;
2、pairs遇到nil不会停止输出;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值