当前位置:网站首页>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不会停止输出;
边栏推荐
- 如何判断业务被DDoS攻击?又会造成哪些危害?
- Vivado IP核之浮点数加减法 Floating-point
- day09_ Static & Final & code block & abstract class & Interface & internal class
- Leetcode question brushing record
- 浅谈缺陷描写样式
- 【面试题】2022年最新软件测试面试题(400道)【附带答案】持续更新...
- What if the 80443 port of the website server has been maliciously attacked?
- 2022 summer second day information competition learning achievement sharing 2
- 华为交换机CE12808导入导出配置文件
- 6、 Network interconnection and Internet
猜你喜欢

day09_ Static & Final & code block & abstract class & Interface & internal class

day15_ generic paradigm

注解(Annotation)

3、 Wide area communication network

浅谈缺陷描写样式

2022 summer second day information competition learning achievement sharing 2

day17_ Under collection

Ansible(自动化软件)

Design of IIR filter based on FPGA

day14_单元测试&日期常用类&字符串常用类
随机推荐
Thinking about MySQL taking shell through OS shell
Sequence list and linked list
day16-集合上
What is DNS amplification attack
三、广域通信网
day14_单元测试&日期常用类&字符串常用类
waf防护是什么
day09_ Static & Final & code block & abstract class & Interface & internal class
8、 Network security
Shell脚本-全局变量、局部变量、环境变量
解决文件大导致磁盘满的问题
Common server faults and their solutions
[interview questions] the latest software test interview questions in 2022 (400) [with answers] continue to update
Six common ways for hackers to attack servers
用神经网络实现手写数字识别
6、 Network interconnection and Internet
Vivado IP核之RAM Block Memery Generator
Why are the job requirements for software testing in 2022 getting higher and higher? Is there any secret in it?
5、 Wireless communication network
Circular linked list and bidirectional linked list