Um, I've never really understood them, I know they can be helpful, the only thing I know is:
getmetatable()
setmetatable()
And I dont' know how they work.
Um, I've never really understood them, I know they can be helpful, the only thing I know is:
getmetatable()
setmetatable()
And I dont' know how they work.
A metatable is an interesting thing, it's not as easy to explain as it is to use however I'll still try.
Example
local Table = []
Table.__index = Table
Table.Age = 20
Table.Name = "Banana"
local table = []
Table.Age = 17
setmetatable(table, Table)
print(table.Name, table.Age)
Output
Banana 17
Because table has the metatable Table, it 'inherits' the properties/children of that metatable, this print will print "Banana", however name can still be overwritten as is the case with age.
Metatables allow you to do some pretty interesting stuff, including emulating your own OOP style class system.
There are also several metamethods that can be attached to functions
.__add, .__sub, .__mul, .__concat, .__lt, .__gt, .__gc I don't know all of them but they're pretty self explanatory.
In the case where you add two metatables together, the will return whatever the .__add metamethod is, .__sub for subtraction and so on.
.__gc is a special case and fires when luas garbage collector kicks in, I have no idea if this can even be used in RBXLua.
There's also .__index and .__newindex which are again special case metamethods, the former fires any time an index is changed and the latter whenever a new index is added.
I'm sure there are some I've missed out however.
This discussion is preserved as it was. New answers, comments, and votes are closed.
1 comment
I think ._mul means multiply