当前位置:网站首页>pairs和ipairs的区别
pairs和ipairs的区别
2022-07-29 05:26:00 【Flytiger1220】
在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不会停止输出;
边栏推荐
猜你喜欢

Hongke solution | a unique solution to realize seamless integration at low cost in Digital Substations

Circular linked list and bidirectional linked list

MerkleTree 构建QT实现UI

Merkletree builds QT implementation UI

day12_多线程

8、 Network security

On defect description style

软件包设置成——>YUM源

Hongke case | PAC: an integrated control solution integrating SoftPLC control logic, HMI and other service functions

day15_ generic paradigm
随机推荐
基于FPGA的IIR型滤波器设计
What are the advantages of software testing? See how much you know
Merkle Tree 存在性功能第一次修改
基于FPGA的4位减法器设计及仿真代码
Network Security Learning (II)
Leetcode question brushing record
2022 summer second day information competition learning achievement sharing 2
超低成本DDoS攻击来袭,看WAF如何绝地防护
Phishing mail disposal
Six common ways for hackers to attack servers
解决文件大导致磁盘满的问题
Why are the job requirements for software testing in 2022 getting higher and higher? Is there any secret in it?
6、 Network interconnection and Internet
Multiple IO usage
Circular linked list and bidirectional linked list
Floating point square root of vivado IP core floating point
如何判断业务被DDoS攻击?又会造成哪些危害?
软件测试职业发展:软件测试人员该何去何从
The difference between DDoS attack and CC attack
自动化测试的生命周期是什么?