LUA에서는 테이블 내에서 테이블을 어떻게 제거합니까?
문제
예를 들어:
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
당신의 지수에, 그것은 그렇지 않습니다 명시 적으로 해당 지수에 이전에 저장된 내용을 삭제하십시오. 그러나 저장된 내용에 대한 기준 수를 낮추어 가비지 수집을받을 수 있습니다.
제휴하지 않습니다 StackOverflow