lua提供了一些輔助函式來操作table。例如,從list中insert和remove元素,對array的元素進行sort,或者concatenate陣列中的所有strings。下面就詳細地講解這些方法。
insert and remove
table.insert將乙個元素插入到指定位置,例如:
t =
table.insert(t, 1, 4}
t的結果將是
insert的第二個引數是可以省略的,這樣就會插入到陣列的最後,從而不必移動其他元素。同樣地,table.remove是從陣列中移除(並返回)乙個元素,table.remove(t,1)將移除t中下標是1的元素,如果不指定移除位置,則移除最後乙個。
通過insert,remove方法,就能很直接的地實現stacks,queues, double queues. push操作就相當於table.insert(t, x), 而pop操作就相當於table.remove(t),例如定義乙個棧:
stack = {}
function stack:push(x)
table.insert(self, x)
endfunction stack:pop()
table.remove(self)
end
sort
另乙個有用的函式是sort,對陣列進行排序,如果沒有提供排序函式,預設是《操作。人們范的普遍的錯誤是嘗試對table的key進行排序。在table裡,所有key組成個集合,絕壁沒有任何順序。如果你要對他們排序,首先要將他們拷貝到乙個陣列裡,然後在進行sort。假如我們有乙個table,想要以排序後的key的順序進行迭代,我們就可以寫過這樣的迭代器:
function pairsbykeys(t, f)
local a = {}
for k in pairs(t) do a[#a+1] = k end
table.sort(a, f)
local i = 0
return function()
i = i + 1
return a[i], t[a[i]]
endend
concatenation
給定的table,所有的元素是string或是number,將返回
table[i]..sep..table[i+1] ··· sep..table[j],分隔符預設是空字串,i預設是1, j預設是表的長度。如果i > j, 則返回空字串。例如:
spring =
print(table.concat(spring, ","))
Lua 筆記14 table庫常用函式
table 庫 insert函式的操作 tbinsert table.insert tbinsert,0 兩個引數,table,和插入的值,預設插入到table最後 for v in pairs tbinsert do print v endtable.insert tbinsert,1,1 三個引...
Lua 初學 table常用的公共方法
1.table.insert table1 name,table2 name 將table2 name的值插入到table1 name t1 t2 table.insert t1,t2 2.table.remove table name,index 如果引數列表中沒有index的時候,移除的是tab...
Lua中的table函式庫
一部分的table函式只對其陣列部分產生影響,而另一部分則對整個table均產生影響.下面會分開說明.table.concat table,sep,start,end concat是concatenate 連鎖,連線 的縮寫.table.concat 函式列出引數中指定table的陣列部分從star...