Pergunta

Por exemplo:

items = {
    [753] = {
    },
    [192] = {
    },
    [789] = {
    },
    [791] = {
    },
    [790] = {
    },
    [776] = {
    },
}

Eu gostaria de remover 789 e todos os dados dentro dele. Tentei tanto: table.remove (itens, 2); e table.remove (itens, 789); (Eu não tinha certeza de como a indexação trabalhou) sem sorte.

Foi útil?

Solução

É tão fácil quanto

items[789] = nil

Na Lua, se uma chave em uma tabela tem um valor nil, então é como se a chave não existe.

> 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

Veja também Progamming na Lua, seção 2.5 . (Mesmo que a versão online é escrito para Lua 5.0, este ainda se aplica a Lua 5.1)

... você pode atribuir nil a um campo da tabela para excluí-lo.

Quando você nil atribuir ao seu índice, que não explicitamente apagar o que foi previamente armazenado em que o índice; mas faz diminuir a contagem de referência para o que foi armazenado lá, potencialmente tornando-se elegíveis para coleta de lixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top