Lua C 5.1 - 遍历所有全局值

问题描述:

最近我一直在探索luac 5.1 api,我想知道是否有可能遍历5.1 api中的每个全局值,我知道可以在5.2中执行此操作(被称为here),因为存在lua_pushglobaltable(lua_State *)。我知道有LUA_GLOBALSINDEX,但我不确定如何使用它来达到此目的。任何帮助将不胜感激!Lua C 5.1 - 遍历所有全局值

谢谢:)

您可以使用您刚才提到的答案代码。只要这样做:

#define lua_pushglobaltable(L) lua_pushvalue(L,LUA_GLOBALSINDEX) 

这是一个完整的程序,列出所有全局变量。如果你删除了定义,它可以在Lua 5.2和5.3中运行。

#include <stdio.h> 
#include "lua.h" 
#include "lauxlib.h" 
#include "lualib.h" 

#define lua_pushglobaltable(L) lua_pushvalue(L,LUA_GLOBALSINDEX) 

int main(void) 
{ 
    lua_State *L=luaL_newstate(); 
    luaL_openlibs(L); 
    lua_pushglobaltable(L); 
    lua_pushnil(L); 
    while (lua_next(L,-2) != 0) { 
     puts(lua_tostring(L,-2)); 
     lua_pop(L,1); 
    } 
    lua_pop(L,1); 
    lua_close(L); 
    return 0; 
} 
+0

太棒了!这正是我需要它做的,非常感谢:) – Batoda