Question

J'ai une table de lua que je l'utilise comme hashmap, soit avec les touches de chaîne:

local map = { foo = 1, bar = 2 }

Je voudrais « pop » un élément de cette table identifiée par sa clé. Il existe une méthode de table.remove(), mais il ne prend l'indice de l'élément à supprimer (soit un nombre) et non une clé générique. Je voudrais pouvoir faire table.remove(map, 'foo') et voici comment j'implémenté:

function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end

Y at-il une meilleure façon de le faire?

Était-ce utile?

La solution

Non, la mise en valeur de la clé de nil est le moyen accepté de supprimer un élément dans la partie hashmap d'une table. Ce que vous faites est standard. Cependant, je vous recommande de ne pas primordial table.remove() - pour la partie de tableau d'une table, la fonctionnalité table.remove par défaut () comprend les indices renumérotation, que votre override ne ferait pas. Si vous souhaitez ajouter votre fonction à l'ensemble de la fonction table, alors je nommerai probablement quelque chose comme table.removekey() ou une telle.

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