lua的table庫中常用的函式

2021-07-24 03:25:38 字數 1416 閱讀 4656

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...