Comment supprimer une entrée de table lua par sa clé?

J’ai une table lua que j’utilise comme hashmap, c’est-à-dire avec des clés de chaîne:

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

Je voudrais “pop” un élément de cette table identifié par sa clé. Il y a une méthode table.remove() , mais il ne faut que l’index de l’élément à supprimer (c’est-à-dire un nombre) et non une clé générique. Je voudrais pouvoir faire table.remove(map, 'foo') et voici comment je l’ai implémenté:

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

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

Non, la définition de la valeur de la clé sur nil est la méthode acceptée pour supprimer un élément dans la partie hashmap d’une table. Ce que vous faites est standard. Cependant, je recommande de ne pas surcharger table.remove() – pour la partie tableau d’une table, la fonctionnalité table.remove () par défaut inclut la renumérotation des index, ce que votre remplacement ne ferait pas. Si vous voulez append votre fonction à l’ensemble des fonctions de la table , alors je l’ table.removekey() probablement quelque chose comme table.removekey() ou quelque chose comme table.removekey() .