Meta tables
In Lua, meta tables can be used to modify the behavior of tables. Any table can be made into a meta table, and any table can have a meta table. Even meta tables can have their own meta tables. Meta tables change the behavior of tables using meta methods. These meta methods are functions with a specific name that affect how a table behaves.
First, create a table named meta. For now, this is a normal table. This table will have a function named __add
. __add
is a reserved function name. The __add
function will take two arguments.
The left argument will be a table with a field called value
, the right argument will be a number:
meta = { } -- Creates table meta.__add = function(left, right) -- adds meta method return left.value + right -- left is assumed to be a table. end
Next, make a table called container. The container table will have a variable called value, with a value of 5
:
container = { value = 5 }
Try to add the number 4
to the container table; Lua will throw a syntax error...