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

How to remove a lua table entry by its key?

我有一个lua表,用作哈希图,即带有字符串键:

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

我想"弹出"该表的键所标识的元素。 有一个table.remove()方法,但是它只使用要删除的元素的索引(即数字),而不是通用键。 我希望能够做到table.remove(map, 'foo'),这是我实现它的方式:

1
2
3
4
5
function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end

有更好的方法吗?


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