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 ++?

¿Fue útil?

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:

  1. Eliminar los parámetros de la pila
  2. 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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top