Как удалить запись таблицы lua по ее ключу?

у меня есть таблица lua, которую я использую в качестве hashmap, т. е. со строковыми ключами:

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

есть ли лучший способ сделать это ?

1 ответов


нет, установка значения ключа в nil - Это принятый способ удаления элемента в части hashmap таблицы. То, что вы делаете, является стандартным. Однако я бы рекомендовал не переопределять table.remove() - для части массива таблицы, таблицы по умолчанию.функция remove () включает в себя перенумерование индексов, чего не сделает ваше переопределение. Если вы хотите добавить свою функцию в table набор функций, тогда я, вероятно, назову его чем-то вроде table.removekey() или что-то в этом роде.