문제

해시 맵으로 사용하는 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() 또는 그와 같은.

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