テーブル(文字列のセットを含む)を返すLua関数があります。この関数は、次のコードを使用して正常に実行されます。
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
関数はテーブルを返します。C ++コードからその内容を読み取るにはどうすればよいですか?
結果のテーブルをトラバースする方法を尋ねる場合は、lua_nextが必要です(リンクには例も含まれています)。egarciaが言ったように、0を返す場合、lua_pcall
関数が返すテーブルはスタックの一番上にあります。
関数がエラーをスローしない場合、lua_pcallは次のようになります。
これは、関数がエラーをスローしない場合は、すぐにlua_setfieldを使用できることを意味します-lua_callとlua_pcall
同じように機能します:
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)