Lua テーブルエントリをキーで削除するにはどうすればいいですか? 質問する

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

もっと良い方法はありますか?

ベストアンサー1

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

おすすめ記事