当前位置: 首页 > news >正文

canvas 特效网站云南政务服务网

canvas 特效网站,云南政务服务网,连云港公司做网站,网线制作的心得体会Lua表的基本概念 Lua中的表#xff08;table#xff09;是一种多功能数据结构#xff0c;可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制#xff0c;其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成#xff1a; 数组部分…Lua表的基本概念 Lua中的表table是一种多功能数据结构可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成 数组部分用于存储整数键值对类似于数组。 哈希部分用于存储非整数键值对类似于字典。 内存分配  Lua表的内存分配是动态的随着元素的增加或减少表的大小会自动调整。以下是内存分配的关键点 初始大小 新创建的表初始时数组部分和哈希部分都为空。 当插入第一个元素时Lua会根据元素类型决定将其放入数组部分还是哈希部分。 动态调整 数组部分当数组部分元素数量超过当前容量时Lua会重新分配更大的数组通常容量会翻倍。 哈希部分当哈希部分的负载因子元素数量与桶数量的比值超过某个阈值时Lua会重新分配更大的哈希表通常容量也会翻倍。 重新哈希 当表的大小发生变化时Lua会进行重新哈希操作将元素重新分配到新的数组或哈希部分。 内存管理 Lua使用垃圾回收机制来管理内存表不再被引用时会被自动回收。你可以通过collectgarbage函数手动触发垃圾回收。 -- 手动触发垃圾回收 collectgarbage(collect) 表的构造 表示引用类型,当定义了table a,table b,在内存中就是a和b都指向同一个表,那么当b修改了表中的数据之后a表的值也会修改,当a和b都指向nil的时候,Lua发现没有指向这个表的变量,那么就会自动回收,下面是实例代码: local a { [s] 1, 54, [k] 2 } local b a print(a[s]) a[s] 3 print(b[s])table的for循环写法 从table结构体分析table属性 typedef struct Table {CommonHeader;lu_byte flags; /* 1p means tagmethod(p) is not present */ lu_byte lsizenode; /* 以2的lsizenode次方作为哈希表长度 */struct Table *metatable /* 元表 */;TValue *array; /* 数组 */Node *node; /* 哈希表 */Node *lastfree; /* 指向最后一个为闲置的链表空间 */GCObject *gclist;int sizearray; /* 数组的大小 */ } Table; 1. 作用这是 Lua 中所有可垃圾回收对象的通用头部。 内容 GCObject *next指向下一个可垃圾回收对象用于垃圾回收器的链表。 lu_byte tt对象的类型标记如 LUA_TTABLE 表示表。 lu_byte marked垃圾回收器的标记位用于标记对象是否存活。 2. 作用标志位用于存储表的元方法metamethod是否存在。 细节 每个标志位对应一个元方法如 __index、__newindex 等。 如果某一位为 1表示对应的元方法不存在为 0 则表示存在。 例如flags (1 p) 可以检查第 p 个元方法是否存在。 3. 作用表示哈希表的大小以 2 的幂次方表示。 细节 哈希表的实际大小为 2^lsizenode。 例如lsizenode 5 表示哈希表有 2^5 32 个桶。 Lua 使用幂次方大小是为了方便哈希表的扩容和缩容。 4. 作用指向表的元表metatable。 细节 元表是 Lua 中实现面向对象编程和操作符重载的核心机制。 如果 metatable 为 NULL表示表没有元表。 5. 作用指向数组部分的指针。 细节 数组部分用于存储整数键值对从 1 开始的连续整数键。 每个元素是一个 TValue 结构存储值和类型标记。 如果 array 为 NULL表示数组部分为空。 6. 作用指向哈希表的指针。 细节 哈希表用于存储非整数键值对如字符串、浮点数等键。 每个桶是一个 Node 结构包含键、值和类型标记。 如果 node 为 NULL表示哈希部分为空。 7. 作用指向哈希表中最后一个空闲的桶。 细节 Lua 的哈希表使用开放寻址法open addressing解决冲突。 lastfree 用于快速找到空闲的桶避免遍历整个哈希表。 8. 作用用于垃圾回收的链表。 细节 Lua 的垃圾回收器使用链表管理所有可回收对象。 gclist 指向下一个需要垃圾回收的对象。 9. 作用表示数组部分的大小。 细节 数组部分的大小是动态调整的随着元素的增加或减少而变化。 例如sizearray 4 表示数组部分可以存储 4 个元素键为 1 到 4。 下面是table内部的抽象图:
http://www.hkea.cn/news/14363106/

相关文章:

  • 做网站的钱叫什么科目站长工具seo词语排名
  • 上海昆山网站公司网站活动模板
  • 国外手机设计网站推荐怎么做网站在线玩游戏
  • 东莞网站制作十强世界工厂网官网下载
  • 无需注册免费创建网站溧阳网站建设
  • 国建设银行e路通网站申陕西网站建设通报
  • linux 建立网站抖音代运营话术模板
  • 公司网站怎么做才能吸引人如何在外管局网站做付汇延期
  • 北京做网站比较有名的公司有哪些珠海做网站哪家专业
  • 网站如何做直播让wordpress主题适用插件
  • 网站字体大小是多少合适wordpress加载主题
  • 没有备案的交易网站最近三天的国内新闻
  • 自己有域名怎么做网站定西市建设网站费用
  • 长春网站快速排名提升专业的句容网站建设
  • 花生壳可以用来做网站吗招投标网站官网
  • 潍坊正规建设网站网站建设120
  • 小说网站开发过程 实训报告河北工程信息网
  • 安阳网站建设_建筑业企业所得税2%
  • 可以做动图的视频网站网站建设需求文档模板下载
  • 普通网站建设多少钱义乌详情页制作
  • 自己建网站卖东西好卖吗百度搜图片功能
  • 口碑好的广州做网站猎头公司是啥意思
  • 扁平化企业网站腾讯和中国联通
  • app产品网站模板网件路由器重置
  • 政务服务中心网站建设总结山东省住房建设部网站首页
  • 深圳 网站开发投资集团
  • 贵阳公司网页网站建设网站做分享链接
  • wordpress海外建站网站设计确认书
  • 中学生设计的网站wordpress换域名后
  • 西安西郊网站建设微信公众号内容编辑及排版