4

我想用 C 语言实现一个函数,这个函数应该用一个表参数调用,它应该返回一个表类型值。

通常我们用 C 来实现 lua 的功能,就像代码一样。但是库不提供 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()orlua_gettable()lua_rawget()从表中提取数据。

编辑:

要创建一个新表,请使用或lua_newtable()填充内容。不要忘记将表留在堆栈上并返回 1。lua_setfield()lua_rawset[i]()

于 2013-08-27T06:42:59.690 回答