(已解决)Lua的pairs迭代索引断开的table时输出结果很奇怪
来源:互联网 发布:英魂之刃开挂软件 编辑:程序博客网 时间:2024/06/05 17:31
测试代码如下:
local tab= {[1] = "a",[2] = "b",[5] = "c" ,[6] = "d" ,[15] = "e",[16] = "f" ,[17] = "g",[100] = "h"}for i,v in pairs(tab) do print( i,tab[i] )end
运行结果如下:
5 c1 a100 h2 b17 g16 f15 e6 d
原因:
table的值有两种储存方式:线性列表List和字典Dictionary。
列表用ipairs迭代,因为它是顺序遍历的。
字典用ipairs迭代,因为它是按键值对方式遍历的。
由于键值对方式不是顺序存取的,所以table中即使是顺序排列也可能乱序输出。
另外,table中的数据的插入方式不同,也会影响数据在表中的排序。
比如 tab[index] = value 和 table.insert(tab,value) ,前者数据顺序跟插入的先后有关,不一定与index相同,而后者则是按顺序从后插入。
参考文章:
Lua中的ipair 和 pair的区别
0 0
- (已解决)Lua的pairs迭代索引断开的table时输出结果很奇怪
- Lua中实现table的打印输出(print table)
- Lua table遍历pairs和ipairs的区别
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- Lua中,泛型for循环遍历table时,ipairs和pairs的区别
- 有关方法返回一个很奇怪的问题 - 问题已解决(转载)
- lua 如何输出树状结构的table?
- lua递归输出表table的内容
- Lua 语言输出Table详细信息的实现
- lua循环过程中删除pairs(table)的table会怎么样
- printf("%d\v",n);奇怪的输出结果
- 奇怪的校正结果
- lua 中table的字符串索引和变量索引
- 解决ubuntu下网络已断开的问题
- 解决ubuntu下网络已断开的问题
- 阶乘 计算中间结果引出的问题(已解决)
- 奇怪的索引
- 关于51822连接jlink的奇怪问题[已解决]
- 微服务实践:微服务的事件驱动数据管理
- leetcode--119. Pascal's Triangle II
- Jqgrid资料
- Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇
- gcc
- (已解决)Lua的pairs迭代索引断开的table时输出结果很奇怪
- Lua中的迭代器与泛型for
- tp3.2中配置链接多个数据库
- http协议支持的6种请求格式
- MySQL binlog 日志的三种模式
- 多项目管理五大特点
- tcpdump 命令
- 什么是雾计算?它与云计算有什么区别?
- Docker命令解读-六