我有作为散列映射,即,使用具有字符串键一个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

有没有更好的方式来做到这一点?

有帮助吗?

解决方案

没有,密钥的值设置为nil是表中的散列映射部取出的物品的接受的方式。你在做什么是标准配置。不过,我建议不重写table.remove() - 为表的阵列部分,默认table.remove()功能包括重编索引,你的覆盖也不会做。如果你想你的函数添加到table功能集,然后我可能会命名为像table.removekey()或一些这样的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top