在 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。以下示例演示如何使用 nil 來移除 Part:
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