如何通过键删除lua表条目?

我有一个lua表,我用它作为一个散列表,即与string键:

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

我想“popup”这个表格中由它的关键字标识的元素。 有一个table.remove()方法,但它只需要删除元素的索引(即一个数字)而不是一个通用的键。 我希望能够做table.remove(map, 'foo') ,这是我如何实现它:

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

有没有更好的方法来做到这一点?

不,将键值设置nil是删除表的哈希映射部分中的项的可接受的方式。 你在做什么是标准的。 但是,我build议不要覆盖table.remove() – 对于表的数组部分,默认的table.remove()function包括重新编号的索引,你的覆盖不会做。 如果你想把你的函数添加到table函数集,那么我可能会把它命名为table.removekey()或类似的东西。

Interesting Posts