我有一个lua表,我将其用作散列图,即使用字符串键:
local map = { foo = 1, bar = 2 }
我想“弹出”由其键标识的此表的元素。有table.remove()
方法,但它只删除元素的索引(即数字)而不是通用键。我希望能够table.remove(map, 'foo')
,这就是我实现它的方式:
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
有更好的方法吗?
答案 0 :(得分:73)
不,将键的值设置为nil
是删除表的hashmap部分中的项目的可接受方式。你正在做的是标准的。但是,我建议不要覆盖table.remove()
- 对于表的数组部分,默认的table.remove()功能包括重新编号索引,您的覆盖不会这样做。如果您确实要将函数添加到table
函数集中,那么我可能会将其命名为table.removekey()
或类似函数。