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