Method: Difference between revisions

From Legacy Roblox Wiki
Jump to navigationJump to search
>Flurite
No edit summary
>Flurite
Redirected page to Methods
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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()'. You can find a full list of methods [http://wiki.roblox.com/index.php/Category:Methods here].
#redirect [[Methods]]
 
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>.
 
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
 
{{EmphasisBox|This tutorial-like section assumes you have a good knowledge of table terminology and functions.}}
 
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 <code>Checkbox.ChangeState(x, y)</code> when the event fired. We need to call <code>Checkbox.ChangeState(Checkbox)</code>.
 
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)

Latest revision as of 20:28, 23 January 2012

Redirect to: