如何使用表类型参数和表类型返回值从Lua调用C函数?
我想用C语言实现一个函数,这个函数应该用一个表参数调用,它应该返回一个表类型值 通常我们用C为lua实现函数,就像代码blow一样。但是库没有提供luaL_检查表和lua_推送表,我们能做什么如何使用表类型参数和表类型返回值从Lua调用C函数?,c,lua,C,Lua,我想用C语言实现一个函数,这个函数应该用一个表参数调用,它应该返回一个表类型值 通常我们用C为lua实现函数,就像代码blow一样。但是库没有提供luaL_检查表和lua_推送表,我们能做什么 static int average(lua_State *L) { int n = lua_gettop(L); double sum = 0; int i; for (i = 1; i <= n; i++) { sum += lu
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;
}
静态整数平均值(lua_State*L)
{
int n=lua_gettop(L);
双和=0;
int i;
对于(i=1;i使用LUA\u checktype()
,如果是表,它将返回LUA\u TTABLE
。然后使用LUA\u getfield()
或LUA\u gettable()
从表中提取数据
编辑:
要创建新表,请使用lua\u newtable()
并使用lua\u setfield()
或lua\u rawset[i]()
。别忘了将表留在堆栈上并返回1。非常感谢。但是我如何从C函数返回表值?非常感谢,我如何将表留在堆栈上?我应该使用lua_settable(L,-3)吗?您可以使用lua_newtable()在堆栈上创建它
,然后使用其他函数对其进行操作,然后不要弹出它。您应该计算堆栈上的元素数,以查看剩余的元素。