質問

私は文字列キーでハッシュマップすなわち、として使用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