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
网上讲那么复杂。