나는 루아에서 호출 된 c 함수를 가지고있다. 첫 번째 매개 변수는 테이블입니다. 이 테이블은 기본 API에 대한 숫자의 입력 배열로 남용됩니다. 그래서 지금 내 코드는 다음과 같습니다 c로 루아 테이블의 테이블 길이를 얻는 방법은 무엇입니까?
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 루프를 두 번해야한다는 것입니다. 이를 피할 수있는 쉬운 방법이 있습니까? 나는 입력이 좋은 경우를 위해 최적화하고 싶다 - int의 테이블.
일반적으로, 나는 대답을 루아 워드 프로세서에있는 질문을 downvote 줄. 그러나 함수 이름이 명확하지 않고 명백한 Google 검색이 그것을 찾지 못했다는 것을 고려해 볼 때, 나는 그것을 미끄러지게 할 것이다. –
죄송 합니다만, 루아는 특히 구글에서 힘들 것 같습니다. 여기에 5.1과 5.2 사이에 많은 변화가 있음을 추가하십시오. 나를 잘못 이해하지 마라, 나는 많은 것을 배우고있다. 그러나 참조 매뉴얼은 찾기가 어렵다. 예를 들어 이전에 나는 luaL_checklong을 다시 구현하는 데 약간의 시간을 보냈다. – starmole