【发布时间】:2012-09-18 23:48:02
【问题描述】:
我有一个从 lua 调用的 c 函数。第一个参数是一个表格。该表被滥用为底层 api 的输入数字数组。所以现在我的代码看起来像这样:
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 文档中找到答案的问题。但是考虑到函数名不明显,而且明显的谷歌搜索也找不到,我就让它滑动吧。
-
很抱歉,但 lua 似乎特别难以用谷歌搜索。再加上 5.1 和 5.2 之间有很多变化。不要误会我的意思,我学到了很多东西,但是参考手册很难搜索。例如之前我花了一些时间重新实现 luaL_checklong,只是因为我错过了正确的名称。
标签: lua