Dans Lua, comment puis-je supprimer une table dans une table?
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.
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.