Question

Par exemple:

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

Je voudrais supprimer 789 et toutes les données à l'intérieur de celui-ci. J'ai essayé à la fois: table.remove (points, 2); et table.remove (points, 789); (Je ne savais pas comment l'indexation de travail) sans chance.

Était-ce utile?

La solution

Il est aussi simple que

items[789] = nil

Dans Lua, si une clé dans une table a une valeur de nil, il est comme si la clé n'existe pas.

> 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

Voir aussi Progamming dans Lua, section 2.5 . (Même si la version en ligne est écrite pour Lua 5.0, cela vaut encore Lua 5.1)

  

... vous pouvez attribuer zéro à un champ de table pour le supprimer.

Lorsque vous attribuez nil à votre index, qui ne fonctionne pas explicitement supprimer ce qui a été précédemment stocké dans cet index; mais il fait baisser le nombre de référence pour ce qui a été stocké là-bas, rendant potentiellement admissibles à la collecte des ordures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top