這應該是簡單的面前,它可能是,但在我的C代碼,我想知道一個表的大小開始之前,我迭代槽它。我需要預先分配一些內存來存儲來自該表的值。要求在C LUA表大小迭代它
我得到這個表作爲一個LUA C函數的參數。
static int lua_FloatArray(lua_State *L)
{
int n = lua_gettop(L);
if (n != 1 || lua_gettype(L, 1) != LUA_TTABLE)
{
luaL_error(L, "FloatArray expects first parameter to be a table");
return 0;
}
int tablesize = ????;
float *a = (float*)lua_newuserdata(L, tablesize * sizeof(float));
lua_pushnil(L);
int x = 0;
while (lua_next(L, index) != 0)
{
a[x++] = (float)lua_tonumber(L, -1);
lua_pop(L, 1); // Remove value, but keep key for next iteration
}
return 1;
}
tablesize?如何獲得表格大小?
如果使用數組表,則在迭代時使用`lua_rawgeti`,這會快得多 – 2011-01-27 16:42:46