Como leer Lua valor de retorno de la tabla C ++
Pregunta
Tengo una función Lua esa tabla devuelve (contiene conjunto de cadenas) la multa función de ejecución utilizando este código:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
la función devuelve una tabla. ¿Cómo se lee su contenido de mi código C ++?
Solución
Si se está preguntando cómo atravesar la tabla resultante, necesita lua_next (el enlace también contiene un ejemplo). Como egarcia Dicho esto, si lua_pcall
devuelve 0, la tabla devuelta la función se pueden encontrar en la parte superior de la pila.
Otros consejos
Si la función no lanza ningún error, entonces lua_pcall hará lo siguiente:
- Eliminar los parámetros de la pila
- Empuje el resultado de la pila
Esto significa que, si su función no lanza ningún error, que puede utilizar de inmediato lua_setfield - lua_pcall
funcionará igual 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' */
sería el equivalente a:
a = funcname(someparam)