2010-04-24 4 views
2

에서 확인하는 방법은이 작업을 수행하는 법률이다 : 그러나루아는 : 테이블의 지정된 키와 관련된 값 중 하나가 전무 인 경우 루아에서 API를

table={} 
bar 
if(table[key]==nil) then 
foo 

, C API를 사용하여, 내가 나오지 않았어 지정된 위치에 nil 값이 있는지 확인하는 방법을 찾지 못합니다.

lua_getglobal(L,"table"); 
lua_gettable(L,key); 

테이블에 저장된 전무 값이 있다면 [키], lua_gettable는 "(인덱스 시도에게 무기 호 값) 루아 API에 대한 호출에서 보호되지 않은 오류"나에게 메시지를 줄 것이다.

키를 실제로 밀기 전에 실제로 해당 키와 관련된 것이 있는지 확인할 방법이 있습니까?

+1

을,하지만 당신은'문자열'(표준 라이브러리를 소지품 변수 이름을 부여 table' 피해야한다 : 키가 문자열 인 경우

대신 lua_getfield를 호출 할 수 있습니다 ','os','io' ...), 특히 그들이 로컬이 아닌 경우. –

답변

3

당신은 lua_gettable이라고 잘못 말하고 있습니다. 이 같아야 lua_gettable

lua_getglobal(L, "tableVar"); 
lua_pushstring(L, key); //assuming key is a string 
lua_gettable(L, -2); 

두번째 파라미터 테이블에 스택 인덱스 아닌 열쇠이다. 이것은 단지 예제 코드입니다 내가 아는

lua_getglobal(L, "tableVar"); 
lua_getfield(L, -1, key); 
+0

가. 나는 그것이 자 시간이라고 생각한다. 그것을 사용하는 방법을 상기시켜 주셔서 감사합니다. – felace

관련 문제