것은

2010-07-23 2 views
0

루아에서, 당신은 누구의 키 자체가 테이블에있는 테이블을 만들 수 있습니다것은

t = {} 
t[{1,2}] = 2 

나는 C를 사용하여 유사한 일을하는 방법을 알고 싶습니다 API. 즉, 나는 루아에서 호출 할 수있는 C 함수를 작성 중이며, 테이블 키가있는 테이블을 리턴 할 것이다. 테이블로 키를 밀어 넣고 lua_settable을 사용하려고했지만 아무 것도하지 않는 것 같습니다.

편집 : 관련 코드 :

lua_createtable(L, 0, n); 
for(i = 0; i < n; ++i){ 
    // push the key table 
    lua_createtable(L, 2, 0); 
    for(j = 0; j < 2; ++j){ 
     lua_pushinteger(L, j+1); 
     lua_pushinteger(L, j); 
     lua_settable(L, -3); 
    } 
    // push the value table 
    lua_createtable(L, 4, 0); 
    for(j = 0; j < 4; ++j){ 
     lua_pushinteger(L, j+1); 
     lua_pushnumber(L, j); 
     lua_settable(L, -3); 
    } 
    lua_settable(L, -3); 
} 

편집 : 나는 바보 당하고; 마지막으로 lua_objlen(L, -1)을 사용하여 테이블의 크기를 확인했습니다. 정수 키 입력 항목이 없으므로 0을 반환합니다. 또한 테이블을 처리 한 루아 코드에서 pairs 대신 ipairs을 사용했습니다. 어리석은 실수.

답변

0

잘못된 항목으로 테이블 항목을 확인하고있었습니다. 해결책으로 질문을 편집했습니다.

0

테이블을 키로 푸시하고 lua_settable을 사용하는 것이 올바른 일입니다. 대부분의 경우, 가치를 추구하는 것을 잊어 버렸고 효과적으로 t = {{} = nil}을했을뿐입니다.