如何通过键值从 Lua 表中删除条目?

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

是否有更好的方法来实现?

原文链接 https://stackoverflow.com/questions/1758991

点赞
stackoverflow用户148870
stackoverflow用户148870

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

2009-11-18 20:53:54