--- Prototype-based objects --
object/class = prototype {value, ...; field = value ...}_init (assuming the default
-- _clone)._".object.fieldobject:method (...)Class.method (object, ...)object.field = xfunction object:method (...) ... end_init
-- @field _clone object constructor which takes initial values for
-- fields in _init
_G.Object = {
_init = {},
_clone = function (self, values)
local object = table.merge (self, table.rearrange (self._init, values))
return setmetatable (object, object)
end,
-- Sugar instance creation
__call = function (...)
-- First (...) gets first element of list
return (...)._clone (...)
end,
}
setmetatable (Object, Object)