lua中pairs和ipairs的区别
在lua中,pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key。
pairs遍历表中全部key,value
ipairs从下标为1开始遍历,然后下标累加1,如果某个下标元素不存在就终止遍历。这就导致如果下标不连续或者不是从1开始的表就会中断或者遍历不到元素。
下面举例说明:
--定义两个不同的表
table5 = {[3] = "Hello";a = 1,b = 5,x = 22}
table6 = {[3] = "Hello";a = 1,b = 5,x = 22;"beautiful",[4] = "China"}
for k,v in ipairs(table5) doprint(k .. ":" .. v)
endprint("------分割线------")for k,v in ipairs(table6) do print(k .. ":" .. v)
end
输出结果
------分割线------
1:beautiful
[Finished in 0.1s]
由此可见只输出了table6中的数据,而table6与table5不同的是table6是从索引“1”开始的;所以,ipairs从下标为1开始遍历,然后下标累加1,如果某个下标元素不存在就终止遍历。这就导致如果下标不连续或者不是从1开始的表就会中断或者遍历不到元素。
for k,v in pairs(table5) doprint(k .. ":" .. v)
endprint("------分割线------")for k,v in pairs(table6) doprint(k .. ":" .. v)
end
输出结果
3:Hello
x:22
a:1
b:5
------分割线------
1:beautiful
a:1
x:22
3:Hello
4:China
b:5
[Finished in 0.1s]
由此可见,两个表中的数据都被打印输出了,所以pairs会遍历表中全部key,value,并且在输出的过程中先按照索引值打印,打印完成后再按照键值对的键的哈希值打印它的值。
lua中pairs和ipairs的区别相关推荐
- Lua中 pairs 和 ipairs 的区别
Lua中 pairs 和 ipairs 的区别 在我看来,pairs就是粗略计算,ipairs就是仔细计算. pairs只关注存在还是不存在,而ipairs还要关注存在是否合理. pairs将存在的值 ...
- lua中, pairs和ipairs的区别
函数pairs和ipairs都是实现遍历功能的函数,通常使用方法是和for函数共同使用构造for u,v in pairs/ipairs(t)实现遍历t表中的所有元素对. 区别在于,pairs可以 ...
- lua中 pairs 与 ipairs 区别
pairs 与 ipairs 两者的区别如下: --数组这么定义,貌似没差别 t= {1,2,3,4,5}for k, v in ipairs(t) doprint(v) endprint(&quo ...
- lua 中pairs 和 ipairs差别
ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别 1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table ...
- Lua系列--pairs和ipairs
Lua系列–pairs和ipairs Lua中Table的存储方式 在看二者的区别之前,我们首先来看一下Lua中的table是如何在内存中进行分配的. Table的组成: 1.哈希表 用来存储Key- ...
- lua中table.和table[]的区别
lua中table.和table[]的区别 lua中的table可以定义为如下格式 local tab = { ["one"] = 1, ["two"] = 2 ...
- pairs和ipairs的区别
在lua中ipairs 和pairs均可以用来遍历集合,但是两者有区别: 同:都是能遍历集合(表.数组),两者均优先按顺序输出没有key的值: 异:对于有key的集合: ipairs从第一个数字key ...
- Lua-泛型for循环 pairs和ipairs的区别
先看一段简单的代码: local mytable = {1,2,aa = "abc",subtable = {},4,6 } --for循环1 print("for -- ...
- Lua⭐️迭代器pairs、ipairs ; 自定义迭代器
迭代器pairs.ipairs array={"lua","c#","c"} --pairs可以遍历所有的键值对,即使其中key不连续 fo ...
最新文章
- 360金融沈赟:只有适配实践的技术才能实现价值掘金
- java基础Java主类结构 2
- java swing jbutton_Java 反射
- CF1019D-Large Triangle【计算几何,二分】
- P2197 【模板】nim 游戏(python3实现)
- svc的参考文献_WCF服务三:svc文件详解
- mysql count视频教程_mysql count提高方法总结
- (附源码)ssm小米购物网站 毕业设计 261624
- Python nii文件转成tiff文件 以及遍历文件夹
- pr录制自己声音杂音很重
- Effective java学习笔记
- L3HSEC 2022秋季招新赛部分WP
- linux .otf文件,otf文件扩展名,otf文件怎么打开?
- 平面设计需要学习的软件
- Android Notification不显示浮动通知,不显示锁屏通知
- 网络经济与企业管理【一】之企业管理概论
- Landsat影像的辐射定标和大气校正
- ERA5 积雪 降雪 区别_“雪走霾来” 河南降雪今夜停止 19-24日将迎雾霾天
- 基于Node.js的博客文章管理系统设计与实现
- 可视化排班管理_排班系统的原理与应用
热门文章
- VLT技术落地 推动DRAM产业格局改变
- 抖音测试美甲软件,抖音美甲大师游戏
- 灰色关联度分析(Grey Relation Analysis,GRA)
- 使用神经网络预测光伏电站功率
- LVGL 8.2.0之Faded area line chart with custom division lines
- java aws s3 文件上传_java-用于在S3中上传文件并在DB中写入记录的AWS API
- html5自动播放音乐外链,HTML5 audio 如何实现播放多个MP3音频
- oppo r15 android 8,抢不到小米8,就用OPPO R15吧
- 绘制Android机器人(c语言)
- 启动MySql服务出现系统错误 193