1

例えば:

items = {
    [753] = {
    },
    [192] = {
    },
    [789] = {
    },
    [791] = {
    },
    [790] = {
    },
    [776] = {
    },
}

789 とその中のすべてのデータを削除したいと思います。私は両方を試しました: table.remove( items, 2 ); および table.remove(項目、789); (インデックス作成がどのように機能するかわかりませんでした)運が悪かった.

4

1 に答える 1

7

それは同じくらい簡単です

items[789] = nil

Luaでは、テーブル内のキーにnil値がある場合、そのキーが存在しないかのようになります。

> t = { [5] = {}, [10] = {} }
> for k,v in pairs(t) do print(k,v) end
5       table: 0037CBC0
10      table: 0037CBE8
> t[5] = nil
> for k,v in pairs(t) do print(k,v) end
10      table: 0037CBE8

Luaでのプログラミングのセクション2.5も参照してください。(オンラインバージョンはLua 5.0用に作成されていますが、これはLua 5.1にも適用されます)

...テーブルフィールドにnilを割り当てて削除できます。

インデックスに割り当てる場合、そのインデックスに以前に保存されていたものは明示的にnil削除されません。ただし、そこに保存されているものの参照カウントが低下するため、ガベージコレクションの対象となる可能性があります。

于 2009-12-01T17:50:15.477 に答える