我有一个从lua调用的c函数。第一个参数是一个表格。该表被滥用作为输入的数字数组到底层api。所以现在我的代码如下所示:如何获取c中lua表的表长度?
int n = 0;
lua_pushnil (L);
while (lua_next (L, 2)) {
n++;
lua_pop (L, 1);
}
int *flat = alloca (n * 4);
lua_pushnil (L);
int i = 0;
while (lua_next(L,2)) {
flat[i++] = (int)lua_tonumber(L, -1);
lua_pop (L, 1);
}
我输入了盲代码,所以请原谅错误。也没有错误检查。但问题是我必须做两次while循环。有没有简单的方法来避免这种情况?我想优化输入是好的情况 - 一个整数表。
通常情况下,我会回答一个问题,谁的答案可以在Lua文档中找到。但考虑到函数名称不明显,并且明显的Google搜索未能找到它,我会让它滑动。 –
对不起,但lua似乎特别难以谷歌。再加上5.1和5.2之间有很多变化。不要误解我的意思,我正在学习很多,但参考手册很难搜索。比如,早些时候,我花了一些时间重新实现luaL_checklong,只是因为我错过了正确的名字。 – starmole