在 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