在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的区别相关推荐

  1. Lua中 pairs 和 ipairs 的区别

    Lua中 pairs 和 ipairs 的区别 在我看来,pairs就是粗略计算,ipairs就是仔细计算. pairs只关注存在还是不存在,而ipairs还要关注存在是否合理. pairs将存在的值 ...

  2. lua中, pairs和ipairs的区别

     函数pairs和ipairs都是实现遍历功能的函数,通常使用方法是和for函数共同使用构造for u,v in pairs/ipairs(t)实现遍历t表中的所有元素对.  区别在于,pairs可以 ...

  3. lua中 pairs 与 ipairs 区别

    pairs 与  ipairs 两者的区别如下: --数组这么定义,貌似没差别 t= {1,2,3,4,5}for k, v in ipairs(t) doprint(v) endprint(&quo ...

  4. lua 中pairs 和 ipairs差别

    ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别 1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table ...

  5. Lua系列--pairs和ipairs

    Lua系列–pairs和ipairs Lua中Table的存储方式 在看二者的区别之前,我们首先来看一下Lua中的table是如何在内存中进行分配的. Table的组成: 1.哈希表 用来存储Key- ...

  6. lua中table.和table[]的区别

    lua中table.和table[]的区别 lua中的table可以定义为如下格式 local tab = { ["one"] = 1, ["two"] = 2 ...

  7. pairs和ipairs的区别

    在lua中ipairs 和pairs均可以用来遍历集合,但是两者有区别: 同:都是能遍历集合(表.数组),两者均优先按顺序输出没有key的值: 异:对于有key的集合: ipairs从第一个数字key ...

  8. Lua-泛型for循环 pairs和ipairs的区别

    先看一段简单的代码: local mytable = {1,2,aa = "abc",subtable = {},4,6 } --for循环1 print("for -- ...

  9. Lua⭐️迭代器pairs、ipairs ; 自定义迭代器

    迭代器pairs.ipairs array={"lua","c#","c"} --pairs可以遍历所有的键值对,即使其中key不连续 fo ...

最新文章

  1. 360金融沈赟:只有适配实践的技术才能实现价值掘金
  2. java基础Java主类结构 2
  3. java swing jbutton_Java 反射
  4. CF1019D-Large Triangle【计算几何,二分】
  5. P2197 【模板】nim 游戏(python3实现)
  6. svc的参考文献_WCF服务三:svc文件详解
  7. mysql count视频教程_mysql count提高方法总结
  8. (附源码)ssm小米购物网站 毕业设计 261624
  9. Python nii文件转成tiff文件 以及遍历文件夹
  10. pr录制自己声音杂音很重
  11. Effective java学习笔记
  12. L3HSEC 2022秋季招新赛部分WP
  13. linux .otf文件,otf文件扩展名,otf文件怎么打开?
  14. 平面设计需要学习的软件
  15. Android Notification不显示浮动通知,不显示锁屏通知
  16. 网络经济与企业管理【一】之企业管理概论
  17. Landsat影像的辐射定标和大气校正
  18. ERA5 积雪 降雪 区别_“雪走霾来” 河南降雪今夜停止 19-24日将迎雾霾天
  19. 基于Node.js的博客文章管理系统设计与实现
  20. 可视化排班管理_排班系统的原理与应用

热门文章

  1. VLT技术落地 推动DRAM产业格局改变
  2. 抖音测试美甲软件,抖音美甲大师游戏
  3. 灰色关联度分析(Grey Relation Analysis,GRA)
  4. 使用神经网络预测光伏电站功率
  5. LVGL 8.2.0之Faded area line chart with custom division lines
  6. java aws s3 文件上传_java-用于在S3中上传文件并在DB中写入记录的AWS API
  7. html5自动播放音乐外链,HTML5 audio 如何实现播放多个MP3音频
  8. oppo r15 android 8,抢不到小米8,就用OPPO R15吧
  9. 绘制Android机器人(c语言)
  10. 启动MySql服务出现系统错误 193