我有一個從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