【转载】
http://www.cnblogs.com/whiteyun/archive/2009/08/10/1543139.html
基于Lua 5.1 。
【表库table】
table.concat(表, 分隔符sep, 开始下标start, 结束下标end)
功能:
列出参数中指定table的数组部分从start到end的所有元素。
元素间以指定的分隔符(sep)隔开。
除了table外, 其他的参数都不是必须的。
分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长。
举例:
t = {"alpha", "beta", "gamma"}
print(table.concat(t, ":"))
-- 输出:alpha:beta:gamma
print(table.concat(t, nil, 1, 2))
-- 输出:alphabeta
print(table.concat(t, "000", 2, 3))
-- 输出:beta000gamma
table.insert(表, 键pos, 值value)
功能:
在table的数组部分指定位置(pos)插入值为value的一个元素。
pos参数可选, 默认为插入到数组部分的末尾位置。
举例:
t = {"1", "2", "3"}
table.insert(t, "4")
table.insert(t, "5")
-- 新表 t = {1, 2, 3, 4, 5}
table.insert(t, 3, "6")
-- 新表 t = {1, 2, 6, 3, 4, 5}
table.remove(表, 键pos)
功能:
删除并返回table数组部分位于pos位置的元素,其后的元素会被前移。
pos参数可选, 默认为table长度, 即从最后一个元素删起。
举例:
t = {"1", "2", "3", "4", "5"}
table.remove(t)
-- 新表:t = {1, 2, 3, 4}
table.remove(t, 1)
-- 新表:t = {2, 3, 4}
table.maxn(表)
功能:
返回指定table中所有正数key值中最大的key值。
如果不存在key值为正数的元素,则返回0 。
此函数不限于table的数组部分。
举例:
t = {[1] = "a", [2]= "b", [26]="z"}
print(table.maxn(t))
-- 输出:26
t[91.32] = true
print(table.maxn(t))
-- 输出:91.32
table.getn(表)
功能:
返回table表中数组下标从1开始连续元素的个数。
举例:
t = {[1] = "a", [2]= "b", [26]="z"}
print(table.getn(t))
-- 输出:2
-- 因为连续下标1,2。而26不再连续。
table.foreachi(表, function(i, v))
功能:
会期望一个从 1(数字 1)开始的连续整数范围。
遍历table中的key和value逐对进行function(i, v)操作
举例:
t = {2,4,6, la = "hello", lb = "world", 8,10,12, lc = "hehe"}
table.foreachi(t, print)
-- 输出结果
1 2
2 4
3 6
4 8
5 10
6 12
table.foreach(表, function(i, v))
功能:
与foreachi不同的是,foreach会对整个表进行迭代。
举例:
t = {2,4,6, la = "hello", lb = "world", 8,10,12, lc = "hehe"}
table.foreach(t, print)
-- 输出结果
1 2
2 4
3 6
4 8
5 10
6 12
lb world
lc hehe
la hello
table.sort(表, comp)
功能:
对给定的table进行升序排序。
comp是一个可选参数,用来自定义sort函数的排序标准。
此函数应满足以下条件:接受两个参数(依次为a,b),并返回一个布尔型的值。
若想要 a 应该排在 b 前面,则返回true,反之返回false。
举例:
t = {1, 3, 8, 5, 2}
-- 默认排序
table.sort(t)
print(table.concat(t,","))
-- 输出:1,2,3,5,8
-- 定义comp
function comp(a,b)
return a > b
end
table.sort(t, comp)
print(table.concat(t,","))
-- 输出:8,5,3,2,1