热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

lua中pairs和ipairs的区别

1、table中存储值的时候,是按照顺序存储的,存储k-v的时候,是按照k的哈希值存储的。2、ipairs---只能输出table中的值,并且不可输出nil,遇到nil就退出 pa

1、table中存储值的时候,是按照顺序存储的,存储 k-v 的时候,是按照 k 的哈希值存储的。

2、ipairs --- 只能输出 table 中的值,并且不可输出nil,遇到 ni l就退出

   pairs --- 可以输出 table 中的值与 k-v ,并且是按照先输出值,再乱序输出 k-v 的顺序进行输出,可以输出 nil

3、以下是结论:

     1>单独的值:两者的输出结果一致

     2>单独的 k-v:再细分为  --- k 全部为数字(ipairs一定是需要从1开始,每次递增1,遇到不连续的k就退出))、k 全部为非数字、k为数字与非数字的混合

     3>值与 k-v 的混合: 当数组索引与数字 k 有冲突的时候,ipairs 不遍历这个情况的 k-v ,不冲突会遍历数字 k

4、以下是针对3的部分 ipairs 测试代码:

a = {[0] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5"} 

没有结果输出!!!因为纯数字的 k 不是从 1开始的

a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5"} 

lua中pairs 和 ipairs 的区别

table={n = 4, "Hello", [3] = "oi", m = 0, "World", a=1, b=2, "Lua","C#"}

lua中pairs 和 ipairs 的区别

table={"Hello", [2] = "oi", "World"}

lua中pairs 和 ipairs 的区别

table={"Hello", [2] = "oi"}

lua中pairs 和 ipairs 的区别


推荐阅读
author-avatar
王瑾瑜2702935333
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有