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?

War es hilfreich?

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:

  1. Entfernen Sie die Parameter vom Stack
  2. 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
scroll top