some.lua


package.path = package.path .. ";./lib/?.lua"

local print = print

local class = require 'lux.class'

Example = class:new{}

function Example:instance (_ENV, attr1, attr2)

  local x, y = 42, 1337

  function getXY()
    return x, y
  end

  function foo ()
    print("foo", attr1, attr2)
    x, y = x+y, x*y
  end

end

function Example:fromArray (array)
  return Example(table.unpack(array))
end

obj = Example('asd', 'dsa')
obj2 = Example:fromArray({true, false})

obj.foo()
obj2.foo()

local NotExample = class:new{}

NotExample:inherit(Example)

function NotExample:instance (_ENV)

  self:super(_ENV, {}, function () end)

  function __operator:call ()
    print "called obj"
  end

end

obj3 = NotExample()
obj3.foo()
obj3()