そのキーで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
これを行うには良い方法はありますか?
解決
いいえ、nil
にキーの値を設定すると、テーブルのハッシュマップの部分内の項目を除去する受け入れ方法です。あなたがやっていることは標準です。しかし、私はtable.remove()
をオーバーライドしていないお勧めします - テーブルのアレイ部分のために、デフォルトのtable.remove()機能は、お使いのオーバーライドはしないだろうインデックスを、番号変更が含まれます。あなたはtable
機能セットにあなたの機能を追加したいならば、私はおそらくtable.removekey()
ようなものか、そのようないくつかの名前を付けたい。
所属していません StackOverflow