문제

예를 들어:

items = {
    [753] = {
    },
    [192] = {
    },
    [789] = {
    },
    [791] = {
    },
    [790] = {
    },
    [776] = {
    },
}

789와 그 내부의 모든 데이터를 제거하고 싶습니다. 나는 두 가지를 모두 시도했다 : table.remove (항목, 2); 및 테이블. (인덱싱이 어떻게 작동하는지 확신하지 못했습니다) 운이 없습니다.

도움이 되었습니까?

해결책

쉽습니다

items[789] = nil

루아에서 테이블의 키에 nil 값은 키가 존재하지 않는 것처럼 보입니다.

> t = { [5] = {}, [10] = {} }
> for k,v in pairs(t) do print(k,v) end
5       table: 0037CBC0
10      table: 0037CBE8
> t[5] = nil
> for k,v in pairs(t) do print(k,v) end
10      table: 0037CBE8

또한보십시오 Lua의 Progamming, 섹션 2.5. (온라인 버전은 LUA 5.0 용으로 작성되었지만 여전히 LUA 5.1에 적용됩니다.)

... 테이블 필드에 nil을 할당하여 삭제할 수 있습니다.

할당 할 때 nil 당신의 지수에, 그것은 그렇지 않습니다 명시 적으로 해당 지수에 이전에 저장된 내용을 삭제하십시오. 그러나 저장된 내용에 대한 기준 수를 낮추어 가비지 수집을받을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top