Luau において、nil は存在しないことや無を表します。他の値やデータ型とは異なります。変数を破棄したり、テーブルの値を削除したりするのに使用できます。false 以外で true と評価されない唯一の値です。
Luau には、他のスクリプトからアクセスできなくなったデータを取り除く ガベージコレクタ があります。最適なパフォーマンスを得るために、長時間実行されるスクリプトで不要になった大きな変数を nil に再定義することで、ガベージコレクタがそれらを取り除くようにします。
local variableToDelete = 5print(variableToDelete) -- 5variableToDelete = nilprint(variableToDelete) -- nillocal dictionaryTable = {Monday = 1,Tuesday = 2,Wednesday = 3}-- 'Tuesday' キーの値を出力print(dictionaryTable.Tuesday) -- 2-- 'Tuesday' キーをクリアdictionaryTable.Tuesday = nil-- 再度キーの値を出力print(dictionaryTable.Tuesday) -- nil
nil を使用してオブジェクトのいくつかのプロパティをクリアすることができます。たとえば、オブジェクトの Parent を nil に設定することで、実質的にそのオブジェクトをゲームから削除することができます。削除した後にオブジェクトをゲームに戻すには、Parent を再割り当てします。以下の例は、Part を削除するために nil を使用する方法を示しています。
local Workspace = game:GetService("Workspace")-- 新しいブロックを作成local part = Instance.new("Part")-- ワークスペースに新しいパートを親として設定し、表示可能にするpart.Parent = Workspacetask.wait(1)-- メモリからは削除せずに、表示からパートを削除part.Parent = niltask.wait(1)-- 変数 "part" に参照されているため、パートはまだ存在し、表示に戻すことができるpart.Parent = Workspacetask.wait(1)-- 再度パートを表示から削除part.Parent = nil-- ガベージコレクタに拾われるようにパートの参照をクリアpart = nil