Difference between revisions of "Metatable"

From ComputerCraft Wiki
Jump to: navigation, search
(Created page with "{{NeedsWork|Not enough info, perhaps incorrect info}} A metatable is an addition on to normal tables for adding metamethods, making classes as well as protecting functions. ...")
 
(Metamethods: Spelling corrections and added to tutorials category)
Line 73: Line 73:
 
|-
 
|-
 
| __lt
 
| __lt
| Less then.
+
| Less than.
 
| The two objects being compared
 
| The two objects being compared
 
|-
 
|-
 
| __le
 
| __le
| Less then or equal to.
+
| Less than or equal to.
 
| The objects being compared
 
| The objects being compared
 
|-
 
|-
 
| __concat
 
| __concat
| The objects being concat-ed <!-- No spell check, please fix this -->
+
| The objects being concatenated
| The two objects being concat-ed
+
| The two objects being concatenated
 
|-
 
|-
 
| __len
 
| __len
 
| The # operator.
 
| The # operator.
| The object having the operation preformed on.
+
| The object having the operation performed on it.
 
|-
 
|-
 
|}
 
|}
 +
 +
[[Category:Tutorials]]

Revision as of 09:18, 14 September 2014

This page needs some serious TLC, stat!
Please help us by cleaning it, fixing it up, or sparing it some love.
(Reason: Not enough info, perhaps incorrect info)

A metatable is an addition on to normal tables for adding metamethods, making classes as well as protecting functions.

Setting and getting a metatable

You will use setMetatable and getMetatable to set and get metatables.

You use getMetatable(table) to get your metatable from a table. It will return the __metatable metafield in the table.

setMetatable(table, metatable) to set your table's metatable. It will error if the __metatable metafield is set.

However, if the table has a metatable with the metafield __metatable, it will error when you use setMetatable and return what it is set to when getMetatable is called.

Metamethods

A metamethod is a type of function which changes the default way a table acts. The table below demonstrates what each one is called, and how each one is used.

Name Description Arguments passed
__index Used when table[variable] is called. The variable.
__newindex Used like __index, but it is only called when the variable matches an empty space in the table. The variable.
__call A metamethod to turn a table's name into a function, or whatever you want it to do. Function, Tuple
__metatable Used for protecting metatables, called when getmetatable() is used on the table, setmetatable() just errors. Nothing (as far as Unit158 knows)
__mul Used as an operator overloader for multiplication. The two objects being "multiplied".
__div Used as an operator overloader for division. The two objects being "divided".
__sub Used as an operator overloader for substraction. The two objects being "subtracted".
__add Used as an operator overloader for addition. The two objects being "added".
__mod Used as an operator overloader for modulo. The two objects being "divided".
__pow Used as an operator overloader for exponentiation operation. The two objects being exponentiated.
__unm I am not exactly sure how this one works, it is for negatives though. The table being changed into a negative.
__eq __eq is an operator overloader for comparison. The two objects being compared
__lt Less than. The two objects being compared
__le Less than or equal to. The objects being compared
__concat The objects being concatenated The two objects being concatenated
__len The # operator. The object having the operation performed on it.