• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua之ipairs与pairs详解

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
ipairs与pairs详解

在说pairs与ipairs之前,先说Lua中table的数据结构:
1.由一个哈希表与一个数组构成,当插入一个元素时,如果元素是键值对,则将其放入哈希表中,如果是值则放入数组中。
2.hash表上会有冲突,通过一个链表的形式组织冲突的元素。

接下来看一下ipairs与pairs是如何遍历table的:
例:

数据在表 t 中的存储方式:
1)根据元素类别分别存进哈希表与数组:
哈希表:{ [1]=1,[3]=3,[5]=5,[6]=6 };
数组:{ 2,4 }
2)将数组中的元素放入哈希表:
当数组中的元素转移到哈希表时,数组中的元素变为[1]=2与[2]=4;而此时哈希表中已有键值对 [1]=1,发生冲突,会将新值2重新与键1匹配,即得到新的键值对[1]=2,此时的哈希表元素为:
{ [1]=2,[2]=4,[3]=3,[5]=5,[6]=6 }

所以当ipairs遍历table时,从键值1开始连续递增,当键值断开或遇到nil时退出,所以上面的例子中ipairs遍历出的结果是2,4,3。
而pairs遍历时,会遍历表中的所有键值对,且元素是根据哈希算法来排序的,得到的不一定是连续的,所以pairs遍历出的结果是2,4,3,6,5。

本文若有不正确之处,敬请提出,多多指教。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap