В Lua, как мне удалить таблицу внутри таблицы?
Вопрос
Например:
items = {
[753] = {
},
[192] = {
},
[789] = {
},
[791] = {
},
[790] = {
},
[776] = {
},
}
Я хотел бы удалить 789 и все данные внутри него.Я попробовал оба варианта:таблица.удалить(пункты, 2 );и таблица.удалить ( элементы, 789 );(Я не был уверен, как работает индексация) безуспешно.
Решение
Это так же просто, как
items[789] = nil
В Lua, если ключ в таблице имеет nil
значение, то это как если бы ключ не существовал.
> t = { [5] = {}, [10] = {} }
> for k,v in pairs(t) do print(k,v) end
5 table: 0037CBC0
10 table: 0037CBE8
> t[5] = nil
> for k,v in pairs(t) do print(k,v) end
10 table: 0037CBE8
Смотрите также Программирование в Lua, раздел 2.5.(Несмотря на то, что онлайн-версия написана для Lua 5.0, это все еще относится к Lua 5.1)
...вы можете присвоить nil полю таблицы, чтобы удалить его.
Когда вы назначаете nil
для вашего индекса это не явно удалите то, что ранее было сохранено в этом индексе;но это действительно снижает количество ссылок на то, что там хранилось, потенциально делая его пригодным для сборки мусора.