本文转自http://www.cnblogs.com/whiteyun/archive/2009/08/10/1543139.html
一部分的table函数只对其数组部分产生影响,而另一部分则对整个table均产生影响。
table.concat(table,sep,start,end)
concat是concatenate(连锁,连接)的缩写, table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,元素间以指定的分隔符(sep)隔开, 除了table外,其他的参数都不是必须的,分隔符的默认值是空字符,start的默认值是1, end的默认值是数组部分的总长。
sep,start,end 这三个参数是顺序读入的, 所以虽然他们都不是必须参数,但如果要指定靠后的参数,必须同时指定前面的参数
tbl = {"alpha", "beta", "game"}
print(table.concat(tbl))
-- 打印结果是alphabetagame
print(table.concat(tbl,nil,1,2))
-- 打印结果是alphabeta
print(table.concat(tbl,"\n",2,3))
-- 打印结果是
--beta
--game
table.insert(table,pos,value)
table.insert()函数在table的数组部分指定位置(pos)插入值为value的一个元素。pos参数可选,默认为数组部分末尾
tbl = {"alpha","beta", "game"}
table.insert(tbl,"delta")
table.insert(tbl,"epsilon")
print(table.concat(tbl,","))
-- 打印结果是 “alpha","beta","game","delta","epsilon"
table.insert(tbl,3,"zeta")
print(table.concat(tbl,","))
-- 打印结果是 "alpha", "beta", "zeta", "delta", "epsilon"
table.maxn(table)
table.maxn()函数返回指定table中所有正数key值中最大的key值,如果不存在key值为正数的元素,则返回0 此函数不限于table的数组部分
tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"}
print(#tbl)
-- 打印结果是3 因为26和之前的数字不连续,所以不算在数组部分内
print(table.maxn(tbl))
-- 打印结果是26
tbl[91.32] = true
print(table.maxn(tbl))
-- 打印结果是91.32
table.remove()函数删除并返回table数组部分位于pos位置的元素,其后的元素会被依次迁移,pos参数可选,默认为table长度,即从最后一个元素删除
tbl = {[1] = "a", [2] = "b", [3] = "c", ["a"] = "z"}
print(table.concat(tbl,","))
-- 打印结果是"a","b","c" concat只能用于table中的数组部分
table.remove(tbl)
print(table.concat(tbl,","))
-- 打印结果是"a","b"
table.insert(tbl,3,"ds")
table.remove(tbl,2)
print(table.concat(tbl,","))
-- 打印结果是"a","ds"
table.sort(table,comp)
table.sort() 函数对给定的table进行升序排序
tbl = {"alpha", "beta", "game", "delta"}
table.sort(tbl)
print(table.concat(tbl,", "))
-- 打印结果是alpha, beta, delta, game
tbl1 = {"alpha", "beta", "delta", "game"}
table.sort(tbl1)
print(table.concat(tbl1,", "))
-- 打印结果是alpha, beta, delta, game
参数comp是一个可选的参数,此参数是一个外部函数, 可以用来自定义sort函数的排序标准。
此函数应满足以下条件:接受两个参数(依次为a,b), 并返回一个布尔型的值, 当a应该排在b前面时,返回true,反之返回false
tbl = {"alpha", "beta", "game", "delta"}
function sortFunc(a,b)
return b < a
end
table.sort(tbl,sortFunc)
print(table.concat(tbl,", "))
-- 这样排序后就是降序排序了
会期望一个从1(数字1)开始的连续整数返回, 遍历table中的key和value逐对进行function(i,v)操作
tbl = {2,4,6,language = "Lua", version = "5",8,10 ,12, web = "hello lua"}
table.foreachi(tbl, function(i, v) print (i,v) end)
print("--------------------------------------------------------");
table.foreach(tbl, function(i, v) print(i, v) end)
table.foreach(table,function(i,v))
与foreachi不同的是,foreach会对整个表达式迭代
table.getn(table)
返回table中元素的个数