在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) doprint(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) doprint(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) doprint(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) doprint(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) doprint(k,v)
end
print("-----------pairs----------------")
for k,v in pairs(table) doprint(k,v)
end

输出

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

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

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-泛型for循环 pairs和ipairs的区别

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

  4. for循环中pairs与ipairs的区别与联系

    其实区别非常的简单: pairs:pairs可以遍历table中所有的key和value. ipairs:下标从1开始遍历table,然后累加1,如果某个元素下标不存在就终止遍历,这就导致如果下标不是 ...

  5. Lua语言中pairs和ipairs的区别

    tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = ...

  6. lua中pairs和ipairs的区别

    在lua中,pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil; 但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出.它只能遍历到表中出现的第一个 ...

  7. lua pairs与ipairs区别

    目录 pairs与ipairs区别 pairs与ipairs区别 pairs是无序遍历,ipairs是有序遍历 pairs支持key,value格式,ipairs 只支持key为数字 local a= ...

  8. lua中 pairs 与 ipairs 区别

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

  9. Lua——迭代器的使用、pairs 和 ipairs区别

    --迭代器是一种可以便利一种集合中所有元素得机制 --lua中,迭代器表示为函数,每调用一次函数,即返回集合中得下一个元素 --主要是根据闭合函数来实现得:闭合函数:一个函数加上该函数所需要访问得所有 ...

最新文章

  1. 企业云存储云办公方案
  2. 基于SfM计算相机姿态
  3. MATLAB【六】 ———— matlab 随机散斑模拟
  4. 浅析优化网站导航设计的几种常用方法
  5. mssql 查询无记录时sum_只会使用Sum函数求和,那就真的Out了,不信你试试Sumif、Sumifs、Sumproduct等...
  6. 小程序·云开发实战 - 体重记录小程序
  7. TensorFlow 2.0 - CNN / 预训练 / RNN
  8. EC600 QuecPython下载脚本代码到开发板、设置开机自运行
  9. 内点法解不等式约束的优化问题
  10. 机器学习(十)——支持向量机
  11. Windows 10 未安装任何音频输出设备 解决方案
  12. html给按钮加颜色代码,HTML按钮上的默认颜色代码
  13. 【ios开发 -- 图片处理 -- 抠图】
  14. 全鲸董事长韩耀宁受邀出席第十九届中国科学家论坛,发表重要演讲
  15. 二叉排序树查找成功和不成功的平均查找长度
  16. 电源模块KIM-3R35L 超越KIS3R33S YEC-SD200 KIW3312S
  17. Android实现利用手势完成屏幕密码锁功能
  18. cxf动态构建webservice
  19. python pptx table_Python-pptx Table
  20. 新建、重命名、删除文件夹必须要通过刷新才能显示解决办法

热门文章

  1. RECEIVED SIGNAL 15
  2. php riak,PHP操作Riak
  3. 举个栗子!Tableau 技巧(202):用参数为图表设置开关按钮
  4. 修改Android“长按”的反应时间
  5. python微信群发_更新新年祝福群发!小白转战Python微信定时发送消息给群或是个人!...
  6. 使用echarts中国地图添加气泡时使用接口访问的数据不显示
  7. redis数据一致性之延时双删详解
  8. 数字IC后端流程——(二)布局规划Floorplan
  9. 如何给网站添加 OG 协议
  10. 用windows10电脑升级ipad系统