table库是由一些辅助函数构成的,这些函数将table作为数组来操作;
19.1 插入和删除
函数table.insert用于将一个元素插入到一个数组的指定位置,它会移动后续元素以空出位置。
如果在调用insert时没有指定位置参数,则会将元素添加到数组末尾:
t = {}
for line in io.lines() do
table.insert(t, line)
end
print(#t) -->读入的行数
函数table.remove会删除(并返回)数组指定位置上的元素,并将该位置之后的所有元素前移
;如果在调用时不指定位置参数,它就会删除数组的最后一个元素。通过这两个函数可以
很容易地实现栈、队列和双向队列;
19.2 排序
table.sort可以对一个数组进行排序,还可以指定一个可选的次序函数。这个次序函数有两个参数,
如果希望第一个参数在排序中的结果位于第二个参数前,就应当返回true。
如果没有这个函数,sort就使用默认的小于操作;
19.3 连接
table.concat,它接受一个字符串数组,并返回这些字符串连接后的结果。它有一个可选参数,用于
指定插到字符串之间的分隔符。这个函数另外还接受两个可选参数,用于指定第一个和最后一个
要连接的字符串索引。
下面这个函数是table.concat的一个扩展,它能处理嵌套的字符串数组:
function rconcat(l)
if type(l) ~="table" then return l end
local res ={}
for i, #l do
res[i] =rconcat(l[i])
end
returntable.concat(res)
end
对于数组中的每个元素,rconcat都递归调用自己,以此来连接所有可能嵌套的字符串数组。
最后它调用table.concat来连接这些结果部分。
print(rconcat{{"a",{"nice"}},"and",{{"long"},{"list"}}})
--> a nice and long list