Come leggere Lua valore di tabella di ritorno da C ++
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 ++?
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à:
- Rimuovi i parametri dallo stack
- 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)