table是Lua中的唯一的数据结构
可以把表当作一个数组,除了nil以外的所有类型,都可以当作表的索引;如果是整数类型的索引,需要加上[ ] ;如果是字符串类型的key,可以去掉引号或者[ ]
#table :表示这个table的长度
table的遍历 :
1、ipairs :只能遍历key值为有序的数字的table,类似c#的数组 --> table = {1,2,3,4,5,6}
*2、pairs :可以遍历key值不为有序的数字的table,key可以为字符串 --> table = {a = "abc" , b = "def"}
初始化表 :
list = { }
数组的索引从1开始,是长度可变的数组,类似C#中的ArrayList
当且仅当索引为2的幂次方的值为nil时,它后面的值就无效了。(数组中有nil元素或者索引不连续)无效并不是不存在,还是可以通过索引来进行访问的,每当这个时候,表的长度是以nil元素前的一个元素的索引为长度 (即 :#list ~= table.maxn(list))
table.maxn(table名),返回数组的最大索引值,但Lua5.2之后就不再有这个方法了
以上表明了,Lua中,数组的长度和最大索引值可能是不一样的
***表中的键为字符串,想得到这个字符串键所对应的值 --> 表名.key (表名打点调用)
table的一些方法 :
1、concat(连接) --> table.concat(表名) -->将table中所有的字符串连接
--> table.concat(表名, ",") -->指定分割字符串,连接字符串,中间以“,”隔开
--> table.concat(表名 , "," , 2 , 3) --> 指定分割字符串,连接指定索引的值,以“,”隔开
2、insert(插入) --> table.insert(表名 , "要插入的值") --> 在末尾处插入
--> table.insert(表名 , 2 , "要插入的值") --> 在指定索引位置插入
3、remove(移除) --> table.remove(表名 , 2) --> 移除指定索引处的元素,最后一个参数可以不加,即默认删除最后一个元素
4、sort(排序) --> table.sort(表名) --> 按字母的AscII码排序