Domanda

Ad esempio:

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

Vorrei rimuovere 789 e tutti i dati al suo interno. Ho provato entrambi: table.remove (voci, 2); e table.remove (voci, 789); (Non ero sicuro di come l'indicizzazione ha lavorato) senza fortuna.

È stato utile?

Soluzione

E 'facile come

items[789] = nil

In Lua, se una chiave in una tabella ha un valore nil, allora è come se la chiave non esiste.

> 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

Progamming in Lua, sezione 2.5 . (Anche se la versione online è scritto per Lua 5.0, questo vale ancora da Lua 5.1)

  

... è possibile assegnare zero a un campo di tabella per eliminarlo.

Quando si assegna nil per l'indice, che non lo fa esplicitamente cancellare ciò che è stato precedentemente memorizzato in tale indice; ma lo fa abbassare il conteggio di riferimento per quello che è stato immagazzinato lì, rendendo potenzialmente idoneo per la raccolta dei rifiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top