Wie ein lua Tabelleneintrag durch den Schlüssel entfernen?
Frage
Ich habe einen lua Tisch, dass ich als hashmap verwenden, dh mit String-Schlüsseln:
local map = { foo = 1, bar = 2 }
Ich möchte „Pop“ ein Element dieser Tabelle durch seinen Schlüssel identifiziert. Es gibt eine table.remove()
Methode, aber es dauert nur den Index des Elements zu entfernen (dh eine Zahl) und nicht ein allgemeiner Schlüssel. Ich möchte in der Lage sein table.remove(map, 'foo')
zu tun, und hier ist, wie ich es umgesetzt:
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
Gibt es einen besseren Weg, dies zu tun?
Lösung
Nein, der Schlüssel des Wert nil
Einstellung ist die akzeptierte Möglichkeit, ein Element in der hashmap Teil einer Tabelle zu entfernen. Was Sie tun, ist Standard. Allerdings würde ich nicht zwingenden table.remove()
empfehlen - für den Array-Abschnitt einer Tabelle, die Standard table.remove () Funktionalität umfasst Umnummerierung den Indizes, die Überschreibung nicht tun würde. Wenn Sie Ihre Funktion auf den table
Funktionssatz hinzugefügt werden sollen, dann würde ich nenne es wahrscheinlich so etwas wie table.removekey()
oder so.