113

ハッシュマップとして使用する 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

それを行うより良い方法はありますか?

4

1 に答える 1

100

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

于 2009-11-18T20:53:54.090 に答える