113

我有一个用作哈希图的 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

有更好的方法吗?

4

1 回答 1

100

不,将键的值设置为nil是在表的哈希映射部分中删除项目的公认方法。你在做什么是标准的。但是,我建议不要覆盖table.remove()- 对于表的数组部分,默认的 table.remove() 功能包括重新编号索引,您的覆盖不会这样做。如果您确实想将您的功能添加到table功能集中,那么我可能会将其命名为类似table.removekey()或类似的名称。

于 2009-11-18T20:53:54.090 回答