Wie Lua Tabelle Rückgabewert von C ++ lesen
Frage
Ich habe eine Lua-Funktion, dass die Renditen Tabelle (enthält von Strings festgelegt) die Funktion Lauf fein mit diesem Code:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
gibt die Funktion eine Tabelle. Wie kann ich es den Inhalt von meinem C ++ Code lesen?
Lösung
Wenn Sie fragen, wie die resultierende Tabelle zu durchlaufen, müssen Sie lua_next (der Link enthält auch ein Beispiel). Als egarcia sagte, wenn lua_pcall
0 zurück, die Funktion der Tabelle zurückgegeben wird, kann oben auf dem Stapel zu finden.
Andere Tipps
Wenn die Funktion wirft keine Fehler, dann lua_pcall werden:
- Entfernen Sie die Parameter vom Stack
- Drücken Sie das Ergebnis auf den Stapel
Das bedeutet, dass, wenn Ihre Funktion, keine Fehler werfen Sie lua_setfield sofort nutzen können - lua_pcall
funktioniert genauso wie lua_call :
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
lua_setfield(L, LUA_GLOBALSINDEX, "a"); /* set global 'a' */
wäre das Äquivalent von:
a = funcname(someparam)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow