Ich mache meine eigene Spiel-Engine, mit Lua C API. Ich solche Lua Tabellenhierarchie bekam:Funktion in Untertabelle einfügen mit Lua C API
my_lib = {
system = { ... },
keyboard = { ... },
graphics = { ... },
...
}
Auch habe ich eine C-Funktion, möchte ich so etwas registrieren,:
inline static int lua_mylib_do_cool_things(lua_State *L) {
mylib_do_cool_things(luaL_checknumber(L, 1));
return 0;
}
Also, wie kann ich es wie Mitglied my_lib sub- registrieren Tisch, einfach so?
my_lib = {
system = { do_cool_things, ... },
keyboard = { ... }
graphics = { ...}
}
Jetzt weiß ich, nur die Art und Weise Mitglieder der globalen Tabellen zu registrieren, funktioniert es wie folgt aus:
inline void mylib_registerFuncAsTMem(const char *table, lua_CFunction func, const char *index) {
lua_getglobal(mylib_luaState, table);
lua_pushstring(mylib_luaState, index);
lua_pushcfunction(mylib_luaState, func);
lua_rawset(mylib_luaState, -3);
}
Aber was Untertabellen?
Es gibt [API-Funktionen] (https://www.lua.org/manual/5.3/manual.html# luaL_setfuncs), die beim Registrieren von Funktionen in Tabellen helfen können, welche Version von Lua verwenden Sie? – Adam
Danke für die Antwort. Ich benutze Lua 5.1, und es sieht so aus, als gäbe es keine solche API-Funktion. –
Wahr, diese Funktion wurde in Lua 5.2 hinzugefügt, aber Sie können stattdessen [luaL_register] (https://www.lua.org/manual/5.1/manual.html#luaL_register) verwenden. – Adam