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

时间:2009-11-18 20:51:05

标签: lua key lua-table

我有一个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

有更好的方法吗?

1 个答案:

答案 0 :(得分:73)

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