我有一个lua表,我用作hashmap,即使用字符串键:
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
有没有更好的方法呢?
不,将键的值设置nil
为删除表的散列映射部分中的项的可接受方式.你正在做的是标准的.但是,我建议不要覆盖table.remove()
- 对于表的数组部分,默认的table.remove()功能包括重新编号索引,您的覆盖不会这样做.如果你想将你的函数添加到table
函数集中,那么我可能会将它命名为类似table.removekey()
或类似的东西.