1. ホーム
  2. lua

[解決済み] luaテーブルのエントリーをキーで削除する方法は?

2022-03-10 09:01:46

質問

私はハッシュマップとして使用するLuaテーブルを持っています、すなわち、文字列のキーを持つ。

local map = { foo = 1, bar = 2 }

このテーブルのキーで特定される要素を "pop" したいのです。このテーブルには 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() といった具合です。