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

Était-ce utile?

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:

  1. Supprimer les paramètres de la pile
  2. 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top