Как удалить запись таблицы 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
есть ли лучший способ сделать это ?
1 ответ:
нет, установив значение ключа в
nil
Это принятый способ удаления элемента в части hashmap таблицы. То, что вы делаете, является стандартным. Тем не менее, я бы рекомендовал не переопределятьtable.remove()
- для массива часть таблицы, таблица по умолчанию.функция remove () включает в себя перенумерацию индексов, которую ваше переопределение не будет делать. Если вы хотите добавить свою функцию вtable
набор функций, то я бы, вероятно, назвал его что-то вродеtable.removekey()
или что-то в этом роде.