2014-09-10 1 views
3

변수의 값을 테이블에 삽입하고 작업이 성공했는지 확인하려고합니다. 따라서 값을 반환하고 싶지만 var가 아니라 테이블에서 반환해야합니다.table.insert -> 삽입 된 값의 키를 기억하십시오.

테이블을 다시 반복하면서 더 간단한 방법이 있습니까?

삽입되는 동안 테이블의 값 키를 기억하는 방법은 무엇입니까? table.insert가 무엇을하고 있는지 거의이다

function(value) 
    for _,v in pairs(theTable) do 
     if v == value then 
      return --(due the table already contains the value) 
     end 
    end 
    table.insert(theTable, value) 

    return -- table.[VALUE] 
end 

답변

4
local ix = #theTable + 1 
theTable[ix] = value 

: 우리가 위치하지 않고 삽입을 호출하는 경우, 특별한 (자주) 경우로

, 그것의 마지막 위치에있는 요소를 삽입 배열 (따라서 아무 요소도 이동하지 않습니다)

편의상, 함수는 매우 비효율적입니다. O(n) "contains"검사를 수행하고 있습니다. 값의 색인을 작성한 경우 훨씬 더 효과적 일 수 있습니다.