Как удалить запись таблицы 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()
или что-то в этом роде.