ハッシュマップとして使用する 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
いいえ、キーの値を に設定することは、nil
テーブルのハッシュマップ部分でアイテムを削除する一般的な方法です。あなたが行っていることは標準的です。ただし、table.remove()
オーバーライドしないことをお勧めします。テーブルの配列部分の場合、デフォルトの table.remove() 機能にはインデックスの再番号付けが含まれますが、オーバーライドではこれは実行されません。関数を関数セットに追加したい場合は、などのtable
名前を付けるとよいでしょう。table.removekey()