PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience

Jul 02 2018, 5:15 PM PST 2 min

Methods are unique functions which belong to a particular object or can be custom made. They are a major focus of Roblox Lua. Some common examples of methods include Instance/Destroy|Destroy(), Instance/Clone|Clone(), and Instance/FindFirstChild|FindFirstChild().

A method acts like a type|function stored within an object. The method itself is accessed in the same way a type|function in a type|table is accessed. However, a special property of methods changes how they are called.

These two lines of code are equivalent, calling the type|function a with the parameter 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 more clean
  • 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 type|function as a method, you automatically pass an argument as the TABLE ITSELF. For example,

function ReturnTable(Num)
	return {
		Num = Num;
		PrintNum = function(self) 
			print(self.Num) 
		end
	}
end
Tabl = ReturnTable(5)
Tabl:PrintNum()

That will output 5 because we passed in the type|table, so the type|function will receive the type|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 this isn’t very common:

Tabl.PrintNum(Tabl)
Tags:
  • basics