cpp
lua_pushnil(L);
while(lua_next(L, -2))
{
// 栈状态:key : -2 value : -1
// do something
lua_pop(L, 1);
}
lua_next 先弹出一个值, 再放一对pair 到栈上, 参数 index 是表的位置
调用后: -1:value -2:key
因为会先弹出一个值,需要先pushnil ,用于弹出。
循环内 pop 后,将value弹出, 下次调用 lua_next时,将 key 弹出,再压入一对 kv
网上讲那么复杂。