static int Lua_ForEach(lua_State * const L)
{
//stack1 = table
//stack2 = function
int n1 = lua_gettop(L)
lua_pushvalue(L, 1)
lua_pushnil(L)
while(lua_next(L, -2))
{
//压入LUA匿名闭包
lua_pushvalue(L, 2)
//压入key
lua_pushvalue(L, -3)
//压入value
lua_pushvalue(L, -3)
//调用LUA匿名闭包
lua_pcall(L, 2, 0, 0)
lua_pop(L, 1)
}
lua_pop(L,1)
int n2 = lua_gettop(L)
printf("\nn1=%d, n2=%d\n", n1, n2)
return 0
}
local tb =
{
["test"] = 1,
[true] = 2,
[false] = 3,
[4] = 4,
5
};
Lua_ForEach(tb, function(k,v) print(k,v) end);