Frage

Zum Beispiel:

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

Ich möchte in der es 789 und alle Daten entfernen. Ich habe versucht, beide: table.remove (item, 2); und table.remove (item, 789); (Ich war nicht sicher, wie die Indizierung gearbeitet) ohne Glück.

War es hilfreich?

Lösung

Es ist so einfach wie

items[789] = nil

In Lua, wenn ein Schlüssel in einer Tabelle einen nil Wert hat, dann wie es ist wenn der Schlüssel nicht existiert.

> 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

Siehe auch Progamming in Lua, Abschnitt 2.5 . (Auch wenn die Online-Version für Lua 5.0 geschrieben ist, gilt dies immer noch zu Lua 5.1)

  

... Sie null auf ein Tabellenfeld zuweisen kann es zu löschen.

Wenn Sie nil zu Ihrem Index zuweisen, die nicht explizit löschen, was zuvor in diesem Index gespeichert wurde; aber es hat für den Referenzzähler senken, was dort gespeichert wurde, möglicherweise macht es für die Garbage Collection in Anspruch nehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top