2015-01-27 4 views
1

저는 루아를 처음 사용하고 있으며 임베디드 테이블을 사용하여 함수를 작성하는 방법을 배우려고합니다. 나는 함수가 테이블의 특정 값을 만족시킬 수있는 방법을 찾아 내려고 노력하고있다.임베디드 테이블에서 값 가져 오기

TestTable = {destGUID1 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}},destGUID2 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}}} 

지금 난 단지 특정 destGUID에서 값을 가져옵니다이 테이블 함수를 만들고 싶어 : 여기

테이블의 예입니다. 마찬가지로 :

function CatInfo(GUID,Cat) 
    for i=1, #TestTable do 
     if TestTable[i] == GUID then 
      for j=1, TestTable[i][GUID] do 
       if TestTable[i][GUID][j] == Cat then 
        return TestTable[i][GUID][Cat].A -- returns value "A" 
       end 
      end 
     end 
    end 
end 

나는이 기능을 사용할 때, 나는 이런 식으로 뭔가를 할 수 있도록 :

CatInfo(destGUID2,catagory1) -- returns "1" 
+0

우선 ** 테이블뿐만 아니라 ** 들여 쓰기를해야합니다. 그들의 구조는 그대로 잘 읽히지 않습니다. (또한, 왜 당신은 부자 인 programmin language "LUA"를 부르려고합니까? ** 명시 적으로 ** 모든 대문자로 명명되지 않을 수도 있습니다 [예 : Wikipedia] (https://en.wikipedia.org/wiki/Lua_% 28programming_language % 29) [고함으로 생각하기 때문에] 그 적절한 이름은 루아입니다.) –

답변

2

테이블 구조, 당신은 어떤 루프를 수행 할 필요가 없습니다 감안할 때; 당신은 단순히 GUID 및 범주에 따라 테이블에서 값을 반환 할 수 있습니다 :이 1를 인쇄합니다

TestTable = { 
    destGUID1 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}}, 
    destGUID2 = {catagory1 = {A=1,B=5,C=3},catagory2 = {A=5,B=3,C=2}} 
} 
function CatInfo(GUID,Cat) 
    return TestTable[GUID][Cat].A 
end 
print(CatInfo('destGUID2','catagory1')) 

. destGUID2catagory1은 문자열이므로 따옴표로 묶어야합니다.

+0

정확히 내가 찾고있는 것입니다. 고마워요! –

+0

@BenjaminCondrea, 귀하의 질문에 대한 답변이 있으면 대답을 수락 할 수 있습니다. –

+0

그래서이 테이블과 비슷한 테이블을 사용하여 이벤트를 기반으로 데이터를 입력하는 함수를 만들었습니다. "destGUID"는 약 10 "catagory"이고 "A"는 타임 스탬프입니다. "B"는 "C"가 0으로 다시 설정되기 전에 계산 된 시간이므로 "C"는 횟수입니다. "catagory "사실을 반환합니다. 입력 된 각 "destGUID"는 고유합니다. 그래서 내 질문에,이 함수는 많은 "destGUID"를 처리 할 수있을 것인가? –