Method: Difference between revisions
>NXTBoy Syntax was invalid |
>Flurite No edit summary |
||
Line 1: | Line 1: | ||
Methods are functions which belong to a particular object. Although standard Lua doesn't have them, they're a major focus of Roblox Lua. | Methods are unique functions which belong to a particular object or can be custom made. Although standard Lua doesn't have them, they're a major focus of Roblox Lua. Some common examples of methods include 'Destroy()', 'Remove()', and 'FindFirstChild()'. | ||
Methods act like a function stored within an object. The method itself is accessed in the same way a | |||
Methods act like a function stored within an object. The method itself is accessed in the same way a [[Functions|function]] in a table is accessed. However, a special property of methods changes how they are called. | |||
These two lines of code are equivalent, calling the function <code>a</code> with the parameter <a>b</b>. | These two lines of code are equivalent, calling the function <code>a</code> with the parameter <a>b</b>. | ||
Line 8: | Line 9: | ||
The second is briefer and more concise. Methods can increase typing speed, because there is less need to retype variable names. | The second is briefer and more concise. Methods can increase typing speed, because there is less need to retype variable names. | ||
==Making your own== | ==Making your own== |
Revision as of 17:18, 30 December 2011
Methods are unique functions which belong to a particular object or can be custom made. Although standard Lua doesn't have them, they're a major focus of Roblox Lua. Some common examples of methods include 'Destroy()', 'Remove()', and 'FindFirstChild()'.
Methods act like a function stored within an object. The method itself is accessed in the same way a function in a table is accessed. However, a special property of methods changes how they are called.
These two lines of code are equivalent, calling the function a
with the parameter <a>b.
b.a(b) b:a()
The second is briefer and more concise. Methods can increase typing speed, because there is less need to retype variable names.
Making your own
Making your own methods can
- Make your code look cool
- Make your tables more dynamic
First, we need a table to apply the method to. I'm going to make a checkbox. It doesn't actually do anything, but it's an application example. Feel free to make this work.
Checkbox = { Checked = false, CheckedImage = "Image", UncheckedImage = "Image", ImageButton = ..., ChangeState = function(self) self.Checked = not self.Checked end } Checkbox.ImageButton.MouseButton1Down:connect(function() Checkbox:ChangeState() end)
You might think you could type
Checkbox.ImageButton.MouseButton1Down:connect(Checkbox.ChangeState)
However, that would call Checkbox.ChangeState(x, y)
when the event fired. We need to call Checkbox.ChangeState(Checkbox)
.
When you call a function as a method, you automatically pass an argument as the TABLE ITSELF. For example,
function ReturnTable(Num) return { Num, PrintNum = function(self) print(self.Num) end } end
Tabl = ReturnTable(5) Tabl:PrintNum()
That will output 5 because we passed in the table, so the function will receive the table it's located in. Because we called it as a method, it passed "Tabl" as an argument. You can do it with a dot, but it looks kind of stupid:
Tabl.PrintNum(Tabl)