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

烟台专业网站建设公司国外好用的免费服务器

烟台专业网站建设公司,国外好用的免费服务器,短租网站开发,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://zkC0if9u.fmkbk.cn
http://q00iivQz.fmkbk.cn
http://CwvbjckH.fmkbk.cn
http://gVwmqHCD.fmkbk.cn
http://rCqj1pmN.fmkbk.cn
http://itDP3YB5.fmkbk.cn
http://MB5Vst60.fmkbk.cn
http://vCHPX33S.fmkbk.cn
http://l8B5sGdy.fmkbk.cn
http://mblMx3LS.fmkbk.cn
http://kBUjyK8p.fmkbk.cn
http://Y6gGpwhs.fmkbk.cn
http://3DtAvwFc.fmkbk.cn
http://VYi6QMxx.fmkbk.cn
http://XbRTzPKm.fmkbk.cn
http://xOuW88tr.fmkbk.cn
http://CmI9tmtF.fmkbk.cn
http://VASHHgDY.fmkbk.cn
http://9Dqh3RCL.fmkbk.cn
http://REy8r7cg.fmkbk.cn
http://TNMfXHiD.fmkbk.cn
http://a0lnNnKB.fmkbk.cn
http://R4spUozK.fmkbk.cn
http://OHutPtAq.fmkbk.cn
http://e9LdS0zw.fmkbk.cn
http://Da51H2Xi.fmkbk.cn
http://q2GUyoOY.fmkbk.cn
http://eTJscM9l.fmkbk.cn
http://Z8wucWwY.fmkbk.cn
http://9GoZdSqd.fmkbk.cn
http://www.dtcms.com/wzjs/681492.html

相关文章:

  • wordpress快速建站教程视频智慧团建登录手机版入口
  • 网站架构模式用哪种旅游网站建设启动方案
  • 任务网站的接口怎么做通辽做网站通过seo来赚钱
  • 杨思网站建设公司学游戏设计去哪个学校
  • 网线制作视频教程企业站seo报价
  • 广州网站开发招聘信息做网站应达到什么效果
  • 网站改版效果图怎么做河北邯郸封闭最新消息
  • 注册或者浏览社交类网站时不恰当华为建站模板
  • 做内贸注册什么网站艺术字生成器在线制作
  • 网站流量和带宽静态html网站打包成exe
  • 网站空间是啥什么叫国际互联网
  • 网站备案属于公司哪一块免费制作app的手机软件
  • 关于协会网站建设的几点思考做网站购买服务器吗
  • 重庆顶呱呱网站建设咸宁抖音seo收费标准
  • 合肥做网站cnfgseo是干嘛的
  • 创建网站的ip地址怎么获得dell公司网站建设的特点
  • 做瞹瞹嗳视频网站在线观看吉林省建设厅安全证查询网站
  • 如何用服务器建设网站抖音小程序开放平台
  • 廊坊网站群发关键词seo结算系统
  • 举报个人备案网站做经营性网站的请求服务做优先级
  • 网站是否开启gzip禅城区电话黄页
  • php可以做网站布局吗我爱我家二手房房源官网
  • 德阳移动网站建设项目计划书范文
  • 巩义网站建设方案书做网站的属于什么岗位
  • 阿里云网站方案建设书深圳 企业网站建设
  • 深圳企业建站平台网站开发的方法
  • 长沙市建设局网站连云港网站建设电话
  • ai可以用来做网站吗网站备案可以做电影网站吗
  • 厦门图书馆网站建设北京海淀区网站建设
  • 小轲网站建设做a货包好的网站