Comment lire la valeur de retour de table Lua de C ++
Question
I ai une fonction Lua que la table de retour (contient l'ensemble de chaînes) la course de fonction fine en utilisant ce code:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
la fonction retourne une table. Comment puis-je lire le contenu de partir de mon code C ++?
La solution
Si vous demandez comment traverser la table résultante, vous devez lua_next (le lien contient également un exemple). Comme egarcia dit, si retourne lua_pcall
0, la table la fonction retournée se trouvent sur le dessus de la pile.
Autres conseils
Si la fonction ne jette aucune erreur, alors lua_pcall sera:
- Supprimer les paramètres de la pile
- Appuyez sur le résultat de la pile
Cela signifie que, si votre fonction ne jette pas des erreurs, vous pouvez utiliser lua_setfield tout de suite - lua_pcall
fonctionnera comme 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' */
serait l'équivalent de:
a = funcname(someparam)