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

* 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

 

posted @ 2013-06-10 00:28  *tingliang*  阅读(305)  评论(0编辑  收藏  举报