質問
このコードを使用して、テーブルを返すLUA関数(文字列のセットを含む)があります。関数は正常に実行されます。
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
関数はテーブルを返します。 C ++コードの内容を読むにはどうすればよいですか?
解決
結果のテーブルを通過する方法を尋ねている場合は、必要です lua_next (リンクには例も含まれています)。として エガシア 言った、もし lua_pcall
0を返し、返された関数がスタックの上にあることがあります。
他のヒント
関数がエラーをスローしない場合、lua_pcallは次のとおりです。
- スタックからパラメーターを削除します
- 結果をスタックに押します
これは、関数がエラーをスローしない場合、lua_setfieldをすぐに使用できることを意味します - lua_pcall
同じように機能します 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' */
に相当します:
a = funcname(someparam)
所属していません StackOverflow