(已解决)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
原创粉丝点击