4

C言語で関数を実装したいのですが、この関数はテーブル引数で呼び出す必要があり、テーブル型の値を返す必要があります。

通常は以下のコードのように lua の C で関数を実装しますが、ライブラリには luaL_checktable と lua_pushtable がありません。

static int average(lua_State *L)
{
    int n = lua_gettop(L);
    double sum = 0;
    int i;

    for (i = 1; i <= n; i++)
    {
            sum += lua_tonumber(L, i);
    }


    lua_pushnumber(L, sum / n);
    lua_pushnumber(L, sum);

    return 2;
}
4

1 に答える 1

5

を使用すると、テーブルの場合にluaL_checktype()戻りLUA_TTABLEます。次に、lua_getfield()またはlua_gettable()またはを使用lua_rawget()して、テーブルからデータを抽出します。

編集:

新しいテーブルを作成するには、またはを使用lua_newtable()して内容を埋めます。テーブルをスタックに残して 1 を返すことを忘れないでください。lua_setfield()lua_rawset[i]()

于 2013-08-27T06:42:59.690 に答える