一:创建表

在Lua中,表的创建是通过构造表达式来完成
——最简单的表是{},用来创建一个空表
——也可以像创建字典一下初始化一个表
——也可以像创建数组一样初始化一个表
Lua(十二)——表_Lua 热更新

表的索引可以是数字或字符串:
Lua(十二)——表_Lua 热更新_02


二:访问元素

——用键值对方式初始化的表用点或者用中括号(中括号里面必须是字符串)去访问
——用数组方式初始化的表直接用索引下标访问就可以(Lua中的索引下标默认是从1开始,索引可以为负数)
Lua(十二)——表_热更新_03


表与列表,字典等一样不固定长度大小,可以增添,删除,修改元素
注意:增添元素与删除元素都不会改变索引下标,而插入元素和移除元素会改变索引下标


三:增添元素

Lua(十二)——表_Lua 热更新_04


四:修改元素

Lua(十二)——表_Lua 热更新_05


五:删除元素

Lua(十二)——表_Lua 热更新_06


六:插入元素

插入元素会影响之前表中元素的位置
Lua(十二)——表_Lua 热更新_07


七:移除元素

只能用于数组方式初始化的表
移除元素会影响之前表中元素的位置
Lua(十二)——表_热更新_08

移除元素table.remove与删除元素赋nil的区别:
删除元素赋nil不会删除当前索引下标只是把当前索引下标元素置为nil,而移除元素table.remove会移除当前索引下标的元素,后面的元素依次往前排
Lua(十二)——表_热更新_09


八:排序元素(根据ASCII码升序排序)

排序的表中的元素必须为同一类型(不能同时有数字类型和字符串类型)
Lua(十二)——表_Lua 热更新_10


九:获取表元素的最大下标

Lua(十二)——表_Lua 热更新_11

 


十:获取表的长度

Lua(十二)——表_Lua 热更新_12

table.getn与#相同,都只能获取到下标连续数组类型的表的长度
Lua(十二)——表_Lua 热更新_13


十一:拼接元素

Lua(十二)——表_Lua 热更新_14


十二:表类型可以理解为是一个引用类型

将tab1赋值给tab2后相当于tab1与tab2两个变量都引用了同一块内存空间(指向了同一块内存空间)
Lua(十二)——表_Lua 热更新_15
所以通过tab1和tab2访问的数据是一样的,所以修改了tab1中的索引下标对应的元素也就等同于修改了tab2中的索引下标对应的元素
Lua(十二)——表_Lua 热更新_16
但是如果只销毁了tab1或者tab2并不代表把它们引用的内存空间销毁,因为当前有两个变量引用着这块内存空间,只是当前销毁的变量不存在了,但是指向的内存空间仍然存在。只有当把这块内存空间的所有引用都销毁了,这块内存空间才会被销毁
Lua(十二)——表_热更新_17