簡體   English   中英

Lua用於訪問表的鍵/值對的C接口是什么?

[英]What is the C interface to Lua for accessing a table's key/value pairs?

在Lua中,使用C接口,給定一個表,如何遍歷表的鍵/值對?

另外,如果使用數組添加了一些表表成員,我是否需要一個單獨的循環來迭代這些成員,或者是否有一種方法可以同時迭代這些成員作為鍵/值對?

正如Javier所說,你想要lua_next()函數。 我認為代碼示例可能有助於使事情更清晰,因為乍一看這可能有點棘手。

引自手冊:

典型的遍歷如下所示:

 /* table is in the stack at index 't' */ lua_pushnil(L); /* first key */ while (lua_next(L, t) != 0) { /* uses 'key' (at index -2) and 'value' (at index -1) */ printf("%s - %s\\n", lua_typename(L, lua_type(L, -2)), lua_typename(L, lua_type(L, -1))); /* removes 'value'; keeps 'key' for next iteration */ lua_pop(L, 1); } 

請注意, lua_next()對堆棧上剩余的鍵值非常敏感。 不要在鍵上調用lua_tolstring() ,除非它確實已經是一個字符串,因為該函數將替換它轉換的值。

lua_next()與Lua的next()函數相同,后者由pairs()函數使用。 它迭代數組部分和散列部分中的所有成員。

如果你想要ipairs()的模擬, lua_objlen()給你的功能與#相同。 使用它和lua_rawgeti()以數字方式迭代數組部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM