2016-03-14 23:35:04 +08:00

36 lines
879 B
ReStructuredText

.. _delegation:
========================
Delegation
========================
.. index::
single: Delegation
Squirrel supports implicit delegation. Every table or userdata can have a parent table
(delegate). A parent table is a normal table that allows the definition of special behaviors
for his child.
When a table (or userdata) is indexed with a key that doesn't correspond to one of its
slots, the interpreter automatically delegates the get (or set) operation to its parent.::
Entity <- {
}
function Entity::DoStuff()
{
::print(_name);
}
local newentity = {
_name="I'm the new entity"
}
newentity.setdelegate(Entity)
newentity.DoStuff(); //prints "I'm the new entity"
The delegate of a table can be retreived through built-in method ``table.getdelegate()``.::
local thedelegate = newentity.getdelegate();