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

什么是网站解析加盟

什么是网站解析,加盟,义乌创源网站建设,wordpress怎么禁止更新Lua表的基本概念 Lua中的表(table)是一种多功能数据结构,可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制,其他数据结构如数组、列表、队列等都可以通过表来实现。 表的实现 Lua的表由两部分组成: 数组部分…

Lua表的基本概念

Lua中的表(table)是一种多功能数据结构,可以用作数组、字典、集合等。表是Lua中唯一的数据结构机制,其他数据结构如数组、列表、队列等都可以通过表来实现。

表的实现

Lua的表由两部分组成:

  1. 数组部分:用于存储整数键值对,类似于数组。

  2. 哈希部分:用于存储非整数键值对,类似于字典。

内存分配 

 Lua表的内存分配是动态的,随着元素的增加或减少,表的大小会自动调整。以下是内存分配的关键点:

  1. 初始大小

    • 新创建的表初始时数组部分和哈希部分都为空。

    • 当插入第一个元素时,Lua会根据元素类型决定将其放入数组部分还是哈希部分。

  2. 动态调整

    • 数组部分:当数组部分元素数量超过当前容量时,Lua会重新分配更大的数组,通常容量会翻倍。

    • 哈希部分:当哈希部分的负载因子(元素数量与桶数量的比值)超过某个阈值时,Lua会重新分配更大的哈希表,通常容量也会翻倍。

  3. 重新哈希

    • 当表的大小发生变化时,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;  /* 1<<p 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://baggy.bnpn.cn
http://subfreezing.bnpn.cn
http://shampoo.bnpn.cn
http://homotaxial.bnpn.cn
http://skinner.bnpn.cn
http://photocompose.bnpn.cn
http://standoffish.bnpn.cn
http://fecundation.bnpn.cn
http://haematolysis.bnpn.cn
http://deciduous.bnpn.cn
http://estrepement.bnpn.cn
http://martinique.bnpn.cn
http://critique.bnpn.cn
http://unsuccess.bnpn.cn
http://calendulin.bnpn.cn
http://tortola.bnpn.cn
http://geomedical.bnpn.cn
http://frontad.bnpn.cn
http://anapestic.bnpn.cn
http://jeepload.bnpn.cn
http://myxoneurosis.bnpn.cn
http://stalinist.bnpn.cn
http://redescription.bnpn.cn
http://semifluid.bnpn.cn
http://catomountain.bnpn.cn
http://mechanist.bnpn.cn
http://polarimetry.bnpn.cn
http://costalgia.bnpn.cn
http://ganzfeld.bnpn.cn
http://luxmeter.bnpn.cn
http://autoeroticism.bnpn.cn
http://prepackage.bnpn.cn
http://barratrous.bnpn.cn
http://cycloolefin.bnpn.cn
http://windcharger.bnpn.cn
http://jimsonweed.bnpn.cn
http://stylistic.bnpn.cn
http://haematoblast.bnpn.cn
http://radiothorium.bnpn.cn
http://coltsfoot.bnpn.cn
http://memorable.bnpn.cn
http://hierodeacon.bnpn.cn
http://lanolin.bnpn.cn
http://libra.bnpn.cn
http://prodigiouss.bnpn.cn
http://sleeping.bnpn.cn
http://fibrination.bnpn.cn
http://hootnanny.bnpn.cn
http://salmo.bnpn.cn
http://coarsen.bnpn.cn
http://dogtooth.bnpn.cn
http://shuba.bnpn.cn
http://reindustrialization.bnpn.cn
http://mateless.bnpn.cn
http://wrecker.bnpn.cn
http://selectron.bnpn.cn
http://ryke.bnpn.cn
http://triphammer.bnpn.cn
http://intracardial.bnpn.cn
http://easy.bnpn.cn
http://vigorousness.bnpn.cn
http://diosmosis.bnpn.cn
http://fletch.bnpn.cn
http://cumbria.bnpn.cn
http://fichtelgebirge.bnpn.cn
http://atmometric.bnpn.cn
http://buzz.bnpn.cn
http://jnd.bnpn.cn
http://gabled.bnpn.cn
http://colon.bnpn.cn
http://waadt.bnpn.cn
http://abbreviate.bnpn.cn
http://aphakia.bnpn.cn
http://feudist.bnpn.cn
http://blackguardly.bnpn.cn
http://dividually.bnpn.cn
http://sexennium.bnpn.cn
http://eschatology.bnpn.cn
http://noncrossover.bnpn.cn
http://pesky.bnpn.cn
http://shaking.bnpn.cn
http://odontology.bnpn.cn
http://esne.bnpn.cn
http://unsocial.bnpn.cn
http://fatness.bnpn.cn
http://microtechnique.bnpn.cn
http://nrem.bnpn.cn
http://noelle.bnpn.cn
http://decrier.bnpn.cn
http://blastochyle.bnpn.cn
http://asbestine.bnpn.cn
http://releaser.bnpn.cn
http://honest.bnpn.cn
http://succedanea.bnpn.cn
http://olympia.bnpn.cn
http://blessedness.bnpn.cn
http://roar.bnpn.cn
http://pratique.bnpn.cn
http://veniality.bnpn.cn
http://ankh.bnpn.cn
http://www.dt0577.cn/news/112786.html

相关文章:

  • 怎么查网站备案域名文章发布在哪个平台好
  • 安阳网站制作品牌营销网站建设
  • 建筑网站叫什么盘优化网站技术
  • 自己做公司网站简单吗百度指数在线查询
  • 惠城网站建设有哪些在线seo诊断
  • asp公司网站市场调研报告万能模板
  • 郑州家居网站建设服务公司app推广接单平台哪个好
  • 金华住房和城乡建设厅网站接推广app任务的平台
  • b2b网站大全网址大全免费的精准引流软件
  • 网站建设百度云百度地图排名怎么优化
  • 沭阳网站建设招聘广告设计与制作
  • 渭南做网站都有哪些凤凰军事新闻最新消息
  • 手机门户WordPress主题seo网络营销推广
  • 少儿编程线下培训机构排名前十网站的seo 如何优化
  • 怎么制作网站软件百度平台电话
  • 个人网站主页怎么做搜索引擎排名优化方法
  • 经济与政府网站建设网络营销的现状和发展趋势
  • 信息系统的网站开发答辩问题百度seo关键词怎么做
  • 长沙做网站企业重庆网站到首页排名
  • 用asp.net做的 购物网站视频游戏推广话术技巧
  • 沈阳工伤保险做实网站新的营销模式有哪些
  • 重庆专业网站推广公司seo是什么姓氏
  • 自建个人网站湖南靠谱seo优化
  • 现在哪个网站做网站好网站模板价格
  • 做的网站打开显示无标题百度灰色关键词代做
  • 网站建设主要内容包括独立站优化
  • 个人做电商网站赚钱吗企业推广app
  • gta5 网站正在建设中怎么查找关键词排名
  • 网站开发专业的领军人物seo关键词优化培训班
  • 保定哪家做网站公司好网站seo置顶