class.lua 382 B

1234567891011121314151617181920212223
  1. function class(klass, super)
  2. if not klass then
  3. klass = {}
  4. local meta = {}
  5. meta.__call = function(self, ...)
  6. local object = {}
  7. setmetatable(object, klass)
  8. if object.init then object:init(...) end
  9. return object
  10. end
  11. setmetatable(klass, meta)
  12. end
  13. if super then
  14. for k,v in pairs(super) do
  15. klass[k] = v
  16. end
  17. end
  18. klass.__index = klass
  19. return klass
  20. end