2017-09-22 14 views
1

최근 나는 루아 5.1 API를 탐색 해 왔으며 5.1 API의 모든 전역 값을 반복 할 수 있는지 궁금해했습니다. 5.2에서 이것을 수행 할 수 있음을 알고 있습니다. (here) lua_pushglobaltable (lua_State *)가 존재합니다. LUA_GLOBALSINDEX하지만이 용도로 사용하는 방법을 모르겠다는 것을 알고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다!루아 C 5.1 - 모든 전역 값 반복하기

고마워요 :)

답변

3

당신이 언급 한 대답에서 코드를 사용할 수 있습니다. 그냥 다음과 같이하십시오 :

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

여기는 모든 전역 변수를 나열하는 완전한 프로그램입니다. 정의를 제거하면 루아 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