#Lua 的 Table 模块
函数 | 说明 |
---|---|
table.concat | 将表中的元素进行拼接 |
table.insert | 向表中插入元素 |
table.move | 将表中的元素移动到另一个表 |
table.pack | 将一组数据打包成一个表 |
table.remove | 从表中删除一个数据 |
table.sort | 排序 |
table.unpack | 将表中的元素解包 |
#table.concat
table.concat (list [, sep [, i [, j]]])
说明
将表中的元素进行拼接,返回字符串 list[i]..sep..list[i+1] ··· sep..list[j]
。
参数
list
- 要进行拼接的表,元素的值必须全是数值sep
- 拼接时相邻元素之间插入的字符串,默认值是空串i
- 拼接元素的起始索引;默认值是 1,即表的第一个元素j
- 拼接元素的终止索引;默认值是#list
,即表的最后一个元素
示例
local array = {"never", "gonna", "give", "you", "up"}
print(table.concat(array)) -- 直接拼接
print(table.concat(array, " ")) -- 元素之间插入空格
print(table.concat(array, " ", 3, 4)) -- 选取部分元素
#table.insert
table.insert (list, [pos,] value)
说明
在表中索引为 pos
的位置插入值为 value
的元素。
参数
list
- 要进行插入的表pos
- 要插入的位置索引;默认为#list+1
,即在表的末尾追加元素value
- 要插入的值
示例
local array = {1, 2, 3, 4, 5} -- 定义数组
print(table.concat(array, ",")) -- 查看数组
table.insert(array, 6) -- 在末尾追加元素
print(table.concat(array, ",")) -- 查看数组
table.insert(array, 3, 10) -- 在索引 3 插入元素
print(table.concat(array, ",")) -- 查看数组
#table.move
table.move (a1, f, e, t [,a2])
说明
将表 a1
中的元素移动到表 a2
中,相当于 a2[t],··· = a1[f],···,a1[e]
。
参数
a1
- 源表f
- 要移动的第一个元素的索引e
- 要移动的最后一个元素的索引t
- 接收第一个元素的索引a2
- 目标表;默认为a1
,即在a1
表内进行移动
示例
local src = {1, 2, 3, 4, 5} -- 定义源数组
local dst = {10, 20, 30, 40, 50} -- 定义目标数组
table.move(src, 2, 4, 2, dst) -- 将 src 数组的 2 至 4 元素移动到 dst 数组的索引 2 位置
print(table.concat(dst, ",")) -- 查看数组
table.move(src, 2, 4, 3) -- 将 src 的 2 至 4 元素移动到自身的索引 3 位置
print(table.concat(src, ",")) -- 查看数组
#table.pack
table.pack (···)
说明
将参数打包成一个表,并将表的 n
字段设为参数的数量。
示例
local result = table.pack('a', 'b', 'c', 'd', 'e')
print(result.n) -- 查看表的字段 n
print(table.concat(result, ",")) -- 查看数组
#table.remove
table.remove (list [, pos])
说明
从表 list
中删除索引为 pos
的元素,之后的元素向前移动。
参数
list
- 要进行删除的表pos
- 要插入的位置索引;默认为#list
,即删除最后一个元素
示例
local array = {1, 2, 3, 4, 5} -- 定义数组
table.remove(array) -- 删除最后一个元素
print(table.concat(result, ",")) -- 查看数组
table.remove(array, 2) -- 删除索引为 2 的元素
print(table.concat(result, ",")) -- 查看数组
#table.sort
table.sort (list [, comp])
说明
将表 list
进行排序,会修改 list
。
参数
list
- 要进行排序的表comp
- 用于元素比较的函数,必须接收两个参数,第一个参数排在第二个参数之前时返回true
,反之返回false
;默认为升序排序
示例
local array = {3, 7, 2, 4, 6, 1, 5} -- 定义数组
table.sort(array) -- 默认(升序)排序
print(table.concat(array, ",")) -- 查看数组
function gt(x, y)
if x > y then
return true
else
return false
end
end
table.sort(array, gt) -- 降序排序
print(table.concat(array, ",")) -- 查看数组
#table.unpack
table.unpack (list [, i [, j]])
说明
将表 list
的元素进行解包,相当于 return list[i], list[i+1], ···, list[j]
。
参数
list
- 要解包的表i
- 要解包的第一个元素;默认为 1,即第一个元素j
- 要解包的最后一个元素;默认为#list
,即最后一个元素
示例
local array = {1, 2, 3, 4, 5} -- 定义数组
local x,y,z = table.unpack(array, 2, 4) -- 解包 2 至 4 元素
print(x, y, z)