Lua C API 遍历 table

http://timothyqiu.com/archives/lua-note-table-traversal-using-c-api/

C API 遍历 Table

 lua_getglobal(L, t);
int index = lua_gettop(L);
lua_pushnil(L);
while (lua_next(L, index)) {
/* 此时栈上 -1 处为 value, -2 处为 key */
lua_pop(L, );
}

lua_next 函数针对 -2 处(参数指定)的 Table 进行遍历。弹出 -1 处(栈顶)的值作为上一个 key(为 nil 时视为请求首个 key),压入 Table 中的下一个 key 和 value。返回值表示是否存在下一个 key。

Lua C API 遍历 table

另外在循环中处理值时要记得随时清理栈,否则 Table 就不在 -2 了。(也可以考虑在 lua_getglobal 后用lua_gettop 存下 Table 的正数索引。)

上一篇:AlarmManager类的应用(实现闹钟功能)


下一篇:Ansible学习总结(1)