키로 LUA 테이블 항목을 제거하는 방법은 무엇입니까?
문제
해시 맵으로 사용하는 LUA 테이블이 있습니다. 즉, 문자열 키가 있습니다.
local map = { foo = 1, bar = 2 }
키로 식별 된이 테이블의 요소를 "팝"하고 싶습니다. 이있다 table.remove()
방법이지만 요소의 인덱스 만 제거하여 일반 키가 아닌 (예 : 숫자)를 제거합니다. 할 수 있기를 원합니다 table.remove(map, 'foo')
그리고 여기에 내가 구현 한 방법은 다음과 같습니다.
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
더 좋은 방법이 있습니까?
해결책
아니요, 키 값을 설정합니다 nil
테이블의 해시 맵 부분에서 항목을 제거하는 허용되는 방법입니다. 당신이하는 일은 표준입니다. 그러나, 나는 재정의하지 않는 것이 좋습니다 table.remove()
- 테이블의 배열 부분의 경우 기본 테이블 () 기능에는 오버라이드가하지 않는 지수의 흡수를 포함합니다. 당신이 당신의 기능을 table
함수 세트, 그런 다음 아마 table.removekey()
또는 그와 같은.
제휴하지 않습니다 StackOverflow