在Lua中,使用C接口,給定一個表,如何遍歷表的鍵/值對?另外,如果使用數組添加一些表表格成員,我是否需要一個單獨的循環來遍歷這些數據,或者是否有一種方法可以在鍵/值對的同一時間迭代這些成員?Lua訪問表格的鍵/值對的C接口是什麼?
3
A
回答
6
lua_next()
與Lua的next()
函數一樣,它被pairs()
函數使用。它遍歷數組部分和散列部分中的所有成員。
如果您想要模擬ipairs()
,則lua_objlen()
會提供與#
相同的功能。使用它和lua_rawgeti()
來數值遍歷數組部分。
10
正如哈維爾所說,你想要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()
,除非它確實已經是一個字符串,因爲該函數將替換爲它轉換的值。
相關問題
- 1. 訪問Lua中的表格關鍵表現值(右側)中的關鍵碼
- 2. 爲什麼我的lua表格對象是空的?
- 3. 從C++中訪問表中的Lua表
- 4. 覆蓋對Lua表元素的訪問
- 5. lua - 從表格內訪問表項
- 6. VIM鍵盤鍵:<C-C>對應的鍵是什麼?
- 7. 在C中從Lua傳遞的訪問表沒有複製值
- 8. C&LUA元表的面向對象訪問
- 9. 訪問連接模型的值的正確方法是什麼?
- 10. 最終得到POST的表單上的鍵值對是什麼?
- 11. 用對象訪問列表的EL的語法是什麼?
- 12. 如何從C#中的對象訪問嵌套鍵值對?
- 13. php訪問對象鍵/值
- 14. LUA C API:類訪問器
- 15. 訪問對象內的鍵的值
- 16. 是什麼接口
- 17. 什麼是接口
- 18. 什麼是接口?
- 19. 什麼是HGETALL的在Lua
- 20. C#訪問接口數組中的對象的非接口方法
- 21. C++類訪問關鍵字「signals」是什麼意思?
- 22. 訪問接口對象的ArrayList
- 23. 什麼是Lua州?
- 24. 獲得對idispatch接口的訪問idispatch接口的成員
- 25. LUA打印特定的鍵/值對
- 26. 「對於每個」在LUA表的鍵值對
- 27. wxJSONOBJECTARRAY - 訪問所需的鍵值對
- 28. 訪問PHP數組中的鍵值對
- 29. 訪問C++中的lua類函數
- 30. 如何訪問Lua中的C指針