Lua table(表)
table是一个关联数组,数组的索引可以是数字或者是字符串,所有索引值都需要用 "[" 和 "]" 括起来;如果是字符串,还可以去掉引号和中括号;即如果没有 [] 括起,则认为是字符串索引。
1. table 的特性
table 的默认初始索引一般以 1 开始,如果不写索引,则索引就会被认为是数字,并按顺序自动从 1 往后编。
table 的变量只是一个地址引用,对 table 的操作不会产生数据影响。
table 不会固定长度大小,有新数据插入时长度会自动增长。
table 里保存数据可以是任何类型,包括 function 和 table。
table 所有元素之间,总是用逗号 "," 隔开。
2. table 的构造
构造器是创建和初始化表的表达式。表是 Lua 特有的功能强大的东西。最简单的构造函数是 {},用来创建一个空表。可以直接初始化数组:
-- 初始化表 mytable = {} -- 指定值 mytable[1]= "Lua" --字符串key值的属性 mytable["value"] = 6 --字符串key值的简写 mytable.value = 16 -- 移除引用 mytable = nil -- lua 垃圾回收会释放内存
3. table 的常用方法
以下列出了 Table 操作常用的方法:
序号 | 方法 & 用途 |
---|---|
1 | table.concat (table [, sep [, start [, end]]]): concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。 |
2 | table.insert (table, [pos,] value): 在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾. |
3 | table.remove (table [, pos]) 返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起。 |
4 | table.sort (table [, comp]) 对给定的table进行升序排序。 |
接下来我们来看下这几个方法的范例。
1)table 连接函数
我们可以使用 concat() 输出一个列表中元素连接成的字符串:
fruits = {"banana","orange","apple"} -- 返回 table 连接后的字符串 print("连接后的字符串 ",table.concat(fruits)) -- 指定连接字符 print("连接后的字符串 ",table.concat(fruits,", ")) -- 指定索引来连接 table print("连接后的字符串 ",table.concat(fruits,", ", 2,3))
执行以上代码输出结果为:
连接后的字符串 bananaorangeapple 连接后的字符串 banana, orange, apple 连接后的字符串 orange, apple
2)table 插入函数
以下范例演示了 table 的插入操作:
fruits = {"banana","orange","apple"} -- 在末尾插入 table.insert(fruits,"mango") print("索引为 4 的元素为 ",fruits[4]) -- 在索引为 2 的键处插入 table.insert(fruits,2,"grapes") print("索引为 2 的元素为 ",fruits[2])
执行以上代码输出结果为:
索引为 4 的元素为 mango 索引为 2 的元素为 grapes
3)table 移除函数
以下范例演示了 table 的移除操作:
fruits = {"banana","orange","apple"} print("最后一个元素为 ",fruits[3]) table.remove(fruits) print("移除后最后一个元素为 ",fruits[3])
执行以上代码输出结果为:
最后一个元素为 apple 移除后最后一个元素为 nil
4)table 排序函数
以下范例演示了 sort() 方法的使用,用于对 Table 进行排序:
fruits = {"banana","orange","apple","grapes"} print("排序前") for k,v in ipairs(fruits) do print(k,v) end table.sort(fruits) print("排序后") for k,v in ipairs(fruits) do print(k,v) end
执行以上代码输出结果为:
排序前 1 banana 2 orange 3 apple 4 grapes 排序后 1 apple 2 banana 3 grapes 4 orange
下一章:Lua 条件语句
Lua 条件语句是在程序执行过程中判断设定的条件是否成立,根据判断结果执行不同的操作。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。条件语句的条件表达式结果可以是任何值,Lua 认为 false 和 nil 为假,true 和 非nil 为真。