質問

このコードを使用して、テーブルを返す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は次のとおりです。

  1. スタックからパラメーターを削除します
  2. 結果をスタックに押します

これは、関数がエラーをスローしない場合、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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top