2011-02-10 6 views
3

ルアでテーブルを完全にワイプまたはリセットする方法を教えてください。私は最後に空白のテーブルにしたいです。ルアでテーブルをワイプまたはリセットする方法

+4

の可能重複[Luaのテーブル内のすべての要素を削除する方法?](http://stackoverflow.com/questions/4880368/how-to-delete-all-elements-in-a-lua-テーブル) – finnw

答えて

7

キーを反復して無制限にします。

for k,v in pairs(t) do 
    t[k] = nil 
end 

それは、アレイの場合、table.removeで値を削除()

+1

削除を使用している場合は、それ以外の場合は、作成された穴の後のすべての要素を移動する必要があるため、時間がかかります。 「ペア」を使用するアプローチははるかに高速です。 – jpjacobs

+3

これは大部分のテーブルでは機能しますが、メタテーブルを使用してこのようにはクリーニングされないテーブルを作成することは可能です。 –

3

何この方法は?

t = {..some non-empty table..} 
...some code... 
t={} 
+1

これはあるテーブルを別のテーブルに置き換え、その内容を消去しません。 (これはしばしば好ましい方法です) –

+1

ターゲットのテーブルにリンクされているvarsがない場合、gcはメモリからそれを削除し、新しい物理アドレスを持つ新しいテーブルを作成します。 ループを使用するすべての要素をnullにすることが最善の方法です。 – Archinamon

0

これは新しいポインタを持つ新しいテーブル「T」を作成し、古い値が削除されます:この1つは、テーブルのすべての値を削除し、あなたがいないテーブルで終わるだろう

t = {1, 2, 3} 
t = {} 
collectgarbage() 

を:

t = {1, 2, 3} 
t = nil 
collectgarbage() 
関連する問題