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
来源:https://www.cnblogs.com/tingliang/archive/2013/06/10/3130243.html