Domanda

Ho una funzione che Lua tavolo rendimenti (contiene il set di stringhe) la multa funzione di esecuzione utilizzando questo codice:

lua_pushstring (lua, "funcname");  
lua_gettable   (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);

la funzione restituisce una tabella. Come faccio a leggere il suo contenuto dal mio codice C ++?

È stato utile?

Soluzione

Se ti stai chiedendo come attraversare la tabella risultante, è necessario lua_next (il link contiene anche un esempio). Come egarcia Detto questo, se lua_pcall restituisce 0, la tabella della funzione restituita può essere trovato in cima alla pila.

Altri suggerimenti

Se la funzione non genera gli eventuali errori, quindi lua_pcall sarà:

  1. Rimuovi i parametri dallo stack
  2. Spingere il risultato allo stack

Questo significa che, se la funzione non genera gli eventuali errori, è possibile utilizzare lua_setfield subito - lua_pcall funzionerà proprio come 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' */

sarebbe l'equivalente di:

a = funcname(someparam)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top