lua中的table函数库

本文转自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)

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,", "))
-- 这样排序后就是降序排序了


table.foreachi(table,function(i,v))

会期望一个从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中元素的个数



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值