В Lua, как мне удалить таблицу внутри таблицы?

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

  •  11-09-2019
  •  | 
  •  

Вопрос

Например:

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 для вашего индекса это не явно удалите то, что ранее было сохранено в этом индексе;но это действительно снижает количество ссылок на то, что там хранилось, потенциально делая его пригодным для сборки мусора.

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