Lua C 5.1 — перебор всех глобальных значений

Недавно я изучал API-интерфейс luac 5.1 и мне было интересно, можно ли пройти через все глобальные значения в API-интерфейсе 5.1, я знаю, что это можно сделать в 5.2 (ссылка Вот ), поскольку lua_pushglobaltable (lua_State *) существует. Я знаю, что есть LUA_GLOBALSINDEX, но я не уверен, как использовать его для этой цели. Любая помощь будет принята с благодарностью!

Спасибо 🙂

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;
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]