lua -- table库
1. 将table视为数组的操作函数
* table.insert (list, [pos,] value)
table.insert用于将一个元素插入到一个数组的指定位置,它会移动pos后续元素。如果不指定位置参数pos,新元素会插入到数组末尾。
t = {100, 200, 300} for k, v in pairs(t) do print(k, v) end print("------------------------") table.insert(t, 1, "a") table.insert(t, 1, "b") table.insert(t, 1, "c") for k, v in pairs(t) do print(k, v) end output: 1 100 2 200 3 300 ------------------------ 1 c 2 b 3 a 4 100 5 200 6 300
此处是"a"而不是a,原因在于a被视为变量,当未初始化时a=nil,相当于在t[1]插入一个nil
省略pos参数
t = {100, 200, 300} for k, v in pairs(t) do print(k, v) end print("------------------------") table.insert(t, "a") table.insert(t, "b") table.insert(t, "c") for k, v in pairs(t) do print(k, v) end output: 1 100 2 200 3 300 ------------------------ 1 100 2 200 3 300 4 a 5 b 6 c
* table.remove (list [, pos])
table.remove用于删除(并返回)数组指定位置上的元素,并将该位置之后的所有元素前移。如果不指定位置参数pos,会删除数组最后一个元素。
t = {100, 200, 300, "a", "b", "c"} for k, v in pairs(t) do print(k, v) end print("------------------------") table.remove(t, 1) table.remove(t, 1) table.remove(t, 1) for k, v in pairs(t) do print(k, v) end output: 1 100 2 200 3 300 4 a 5 b 6 c ------------------------ 1 a 2 b 3 c
省略pos位置参数
t = {100, 200, 300, "a", "b", "c"} for k, v in pairs(t) do print(k, v) end print("------------------------") table.remove(t) for k, v in pairs(t) do print(k, v) end 1 100 2 200 3 300 4 a 5 b 6 c ------------------------ 1 100 2 200 3 300 4 a 5 b
* table.sort (list [, comp])
table.sort用于以特定次序排列数组list,comp用于指定排序的比较规则;当忽略comp时,sort使用<操作符进行比较。
注意:此方法直接修改数组list
local function print_t(table) for k, v in pairs(t) do print(k, v) end end t = {30, 10, 2, 40, 5, 100} print(t) print_t(t) table.sort(t) print("---------------------") print(t) print_t(t) > table: 0x22b1a70 1 30 2 10 3 2 4 40 5 5 6 100 --------------------- table: 0x22b1a70 1 2 2 5 3 10 4 30 5 40 6 100
comp是接受两个参数,返回true或false的函数,用于指定比较规则
> t = {30, 10, 2, 40, 5, 100} > table.sort(t, function(a,b) return a < b end) > = table.concat(t, ", ") 2, 5, 10, 30, 40, 100 > t = {30, 10, 2, 40, 5, 100} > table.sort(t, function(a,b) return a > b end) > = table.concat(t, ", ") 100, 40, 30, 10, 5, 2
* table.concat (list [, sep [, i [, j]]])
table.concat用于连接数组元素,生成一个字符串,sep用于指定元素间的分隔符,i, j是数组下标,表示要选取数组的范围[i, j]
> t = {1, "two", 3, "four", "V"} > table.concat(t) > = table.concat(t) 1two3fourV > = table.concat(t, ",") 1,two,3,four,V > = table.concat(t, ",", 2) two,3,four,V > = table.concat(t, ",", 2, 4) two,3,four
参考:http://lua-users.org/wiki/TableLibraryTutorial