Nil: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>Camoy
format; removed category
m Text replacement - "</SyntaxHighlight>" to "</syntaxhighlight>"
Tags: mobile web edit mobile edit
 
(31 intermediate revisions by 9 users not shown)
Line 1: Line 1:
==Nil==
{{Map|Scripting|Data Types}}
===What is Nil?===
'''Nil''' is a '''noninitialized''' value, or lack of a value, that is blank and equal to nothing. Math cannot be performed on nil or anything equivalent to nil, because ''nothing'', unlike 0, is not a numerical value. When an object is deleted, using the [[Remove|:Remove()]] function, it is removed from the game completely by setting its parent to nil.  Unless the object is referenced, it cannot be recovered.


===Use Cases===
==What is Nil?==
By definition, '''nil''' is a state of non-existence or nothingness. In Lua, '''nil''' is a ''non-initialized'' value, and is a special value used to represent nothing. It represents the absense of a useful value. Math cannot be performed on nil or anything equivalent to nil, because ''nothing'', unlike 0, is not a numerical value. When an object is deleted, using the [[Destroy]] method, it is removed from the game completely by setting its parent to nil. Unless the object is referenced, it cannot be recovered.


'''Nil''' can be used to remove the value of a property of an object.  It is very common to set the [[Parent|parent]] of an object to "Nil", removing it from the game per se.  If the object is referenced by a [[Variables|variable]] for example, you can bring the object back.
==Use Cases==


{{Example|''Example script of referencing and object.''
'''Nil''' can be used to blank the value of a property of an object (this can only be done with Instance-type properties; you cannot do this to number properties). It is very common to set the [[Parent]] of an object to '''nil''', which removes it from the game. However, it is possible to bring the object back. For example, if the object is referenced by a [[variable]], you can set its Parent property again and bring the object back.
<pre>
 
p = Instance.new("Part") -- We will create a new grey brick
{{Example|''Example script of referencing an object.''
p.Parent = game.Workspace -- The part (a grey brick) has a parent, game.Workspace
<syntaxhighlight lang="lua">
p.Parent = nil -- The part now has no parent (and so it disappears).
p = Instance.new('Part') -- Create a new brick
p.Parent = game.Workspace -- part still exists because it is referenced by 'p'
p.Parent = Workspace -- The part (a grey brick, by default) has a parent, the workspace
p.Parent = nil -- part disappears again (for it has no parent)
wait(1)
p = nil -- part is no longer referenced by anything, so it gets picked up by the garbagecollector
p.Parent = nil -- The part now has no parent (and so it disappears from view, but not from memory).
</pre>
wait(1)
}}
p.Parent = Workspace -- part still exists because it is referenced by the variable 'p'
wait(1)
p.Parent = nil -- part disappears again (it has no parent)
p = nil -- part is no longer referenced by anything, so it gets picked up by the garbage collector
</syntaxhighlight>}}


Look through the comments in the script above to understand why recovering an object by reference is possible.
Look through the comments in the script above to understand why recovering an object by reference is possible.
Line 22: Line 25:
Here are more examples of "nil" usage:
Here are more examples of "nil" usage:


{{Example|
{{Example|<syntaxhighlight lang="lua">
<pre>
Workspace.Player.Humanoid.Health = nil
game.Workspace.USERNAME.Humanoid.Health = nil
</syntaxhighlight>
</pre>
<i>Using the script above will have the same effects as the following script:</i>
<i>Using the script above will have the same effects as the following script:</i>
<pre>
<syntaxhighlight lang="lua">
game.Workspace.USERNAME.Humanoid.Health = 0
Workspace.Player.Humanoid.Health = 0
</pre>
</syntaxhighlight>}}
}}
 
This occurs because setting a players health to "nil" will cause the player to have nothing as a health. Because nothing is similar to having no health at all, your health will go to 0 and you will gain a wipeout.
 
===See Also===
 
[[Absolute beginner's guide to scripting]]
 
[[Part]]
 
[[Script Creation Walkthrough]]
 
[http://www.lua.org/pil/1.2.html Programming in Lua:1.2 - Global Variables]


[http://www.lua.org/pil/2.1.html Programming in Lua:2.1 - Nil]
This occurs because setting a players health to "nil" will cause the player to have nothing as a health. Because nothing is similar to having no health at all, you will die.  


[http://en.wikipedia.org/wiki/Null_(computer_programming) Null]
==See Also==
*[[Absolute beginner's guide to scripting]]
*[[Script Creation Walkthrough]]
*[http://www.lua.org/manual/5.1/manual.html#2.2 Lua 5.1 Reference Manual: Values and Types]
*[http://www.lua.org/pil/1.2.html Programming in Lua:1.2 - Global Variables]
*[http://www.lua.org/pil/2.1.html Programming in Lua:2.1 - Nil]
*[http://en.wikipedia.org/wiki/Null_(computer_programming) Null]


[[Category:Data Types]]
[[Category:Data types]]
[[Category:Scripting Tutorials]]

Latest revision as of 06:02, 27 April 2023

What is Nil?

By definition, nil is a state of non-existence or nothingness. In Lua, nil is a non-initialized value, and is a special value used to represent nothing. It represents the absense of a useful value. Math cannot be performed on nil or anything equivalent to nil, because nothing, unlike 0, is not a numerical value. When an object is deleted, using the Destroy method, it is removed from the game completely by setting its parent to nil. Unless the object is referenced, it cannot be recovered.

Use Cases

Nil can be used to blank the value of a property of an object (this can only be done with Instance-type properties; you cannot do this to number properties). It is very common to set the Parent of an object to nil, which removes it from the game. However, it is possible to bring the object back. For example, if the object is referenced by a variable, you can set its Parent property again and bring the object back.

Example
Example script of referencing an object.
p = Instance.new('Part') -- Create a new brick
p.Parent = Workspace -- The part (a grey brick, by default) has a parent, the workspace
wait(1)
p.Parent = nil -- The part now has no parent (and so it disappears from view, but not from memory).
wait(1)
p.Parent = Workspace -- part still exists because it is referenced by the variable 'p'
wait(1)
p.Parent = nil -- part disappears again (it has no parent)
p = nil -- part is no longer referenced by anything, so it gets picked up by the garbage collector


Look through the comments in the script above to understand why recovering an object by reference is possible.

Here are more examples of "nil" usage:

Example
Workspace.Player.Humanoid.Health = nil

Using the script above will have the same effects as the following script:

Workspace.Player.Humanoid.Health = 0


This occurs because setting a players health to "nil" will cause the player to have nothing as a health. Because nothing is similar to having no health at all, you will die.

See Also