c遍歷lua中table的方法

2021-07-25 13:42:51 字數 610 閱讀 9562

遍歷乙個table,肯定是不知道table的每個key的,所以lua_getfield肯定是不可行的。

要遍歷table,最主要的是lua_next函式,該函式主要接受乙個int引數,代表當前table所在的索引,索引之上應該需要乙個key,每次lua_next都會從當前的key遍歷下乙個key,於是我們想要得到第乙個key,則只需要壓入乙個nil就行了。

當lua_next返回0的時候,代表遍歷完畢,它會把table上的key進行彈出操作;當當前有key的時候,返回非0值,同時將key和value壓入棧,棧頂就是value,-2則是key。我們可以取到當前的value,然後將key留在棧中繼續下一次的遍歷。

上**:

int tableindex = lua_gettop(l);

// push the first key

lua_pushnil(l);

while (0 != lua_next(l, tableindex))

// last key will pop the key, stack : table

lua_pop(l, 1);

return true;

}

lua遍歷table中刪除table中元素

很多時候,我們有這樣的需求 刪除table中若干符合條件的元素,最原始的想法就是用for遍歷一邊table,符合條件的用table.remove就可以了 function test1 t for i v in ipairs t do if v.id 3 0 then table.remove t i...

lua 遍歷陣列和table

方法一,可以用for來遍歷 do table week for i 1,table week do print table week i endend 方法二 採用迭代器的方式遍歷的,i為下標,v為table或者陣列的值。do table week for i,v in pairs table we...

Lua中table的長度

官方文件是這麼描述 的 取長度操作符寫作一元操作 字串的長度是它的位元組數 就是以乙個字元乙個位元組計算的字串長度 table t 的長度被定義成乙個整數下標 n 它滿足 t n 不是nil而 t n 1 為nil 此外,如果 t 1 為nil,n 就可能是零。對於常規的陣列,裡面從 1 到 n 放...