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?

War es hilfreich?

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.

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