Как удалить запись таблицы 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 80

1 ответ:

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