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

StackOverflow https://stackoverflow.com/questions/1758991

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть таблица Lua, которую я использую в качестве хэш-карты, т.е. со строковыми ключами:

local map = { foo = 1, bar = 2 }

Я хотел бы «вытолкнуть» элемент этой таблицы, идентифицированный его ключом.Eсть table.remove() метод, но для него требуется только индекс удаляемого элемента (т. е. число), а не общий ключ.Я хотел бы иметь возможность сделать table.remove(map, 'foo') и вот как я это реализовал:

function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top