学习传送:https://www.runoob.com/lua/lua-tables.html,放了个五一,之前写的忘了保存,伤心.....
1.数组
(1)一维数组
最简单的数组,一行一列的线性表,定义的时候可以直接赋值,值支持多种类型,不像c#中整型数组就只有整型值,如果没有赋值循环取值的时候输出的是nil
输出:
数组取值和访问:
array={key1=value1,value2,value3}
两种方法访问:a.通过索引取,索引从1开始----->array[index] (index>=1)
b.通过key取value1-->array.key1 (只有定义了key的才能这样取,如果这样取value2的话就会报错,没有定 义默认key从1开始,也就是说现在value2的key是1,value3是2)
(2)多维数组
多行多列的表,定义可以直接array={{1,2,3},{4,5,6},......},也可以通过for循环赋值
输出:
访问和以为数组一样通过锁定或者key访问,索引访问的话就是多个索引,比如访问4---array[2][1]
2.表(table)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。
Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。
Lua table 是不固定大小的,你可以根据自己需要进行扩容。
Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"format"来索引table string。
(1)两个表之间可以直接用“=”赋值,比如a={1,2}b=a,那么b表和a保持完全一致,相当于引用关系,b表中的值变化相应a表中也会变化,a也会影响b,但是b表如果为nil不影响a,a表为nilb表也为nil
a={1,2}b=a --->b={1,2}
b[1]="wow" ---->b={"wow",2} a={"wow",2}
a[1]="ou" ---->b={"ou",2} a={"ou",2}
b=nil ----->b=nil a={"ou",2}
a=nil -----b=nil a=nil
(2)table操作
a.table.concat(tableName[,split[,startIndex[,endIndex]]])
返回用指定分隔符从指定开始位置到指定结束位置连接表中元素的字符串,tableName--表,split---连接符号,startindex---起始位 置,endindex----结束位置,split,startindex,endindex可以不填。
输出:
b.table.insert(tableName[,pos],value)
在表中指定位置插入值,若无指定位置,插入表末尾。tableName---表名,pos---位置(索引),value---值
输出:
c.table.remove(tableName[,pos])
移除表中指定位置的元素,如果没有指定位置,从末尾移除
d.table.sort(tableName[,comp])
对给定的table进行升序排序。
南投北浪 2020/5/8