1. 程式人生 > >lua中的table函式庫

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中元素的個數