Luaのでは、どのように私は、テーブル内のテーブルを削除しますか?
質問
例
items = {
[753] = {
},
[192] = {
},
[789] = {
},
[791] = {
},
[790] = {
},
[776] = {
},
}
私はそれの内側789と、すべてのデータを削除したいと思います。私は両方を試してみました: table.remove(項目2)。そしてtable.remove(項目789)。運と(私はインデックスが働いたかどうかはわかりませんでした)。
解決
これは
と同じくらい簡単ですitems[789] = nil
テーブルのキーがnil
値を持っている場合は、Luaのでは、それはキーが存在しないかのようだ。
> 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 の中で Progammingも参照してください。 (オンライン版は、Luaの5.0のために書かれていますが、これはまだLuaの5.1に適用されます)
あなたのインデックスに...あなたはそれを削除するには、テーブルのフィールドにnilを割り当てることができます。
nil
を割り当てると、、それはの明示の前にそのインデックスに保存したものを削除しません。それは潜在的にガベージコレクションのために、それが対象となって、そこに格納されていた何のために参照カウントを下げています。
所属していません StackOverflow