class.lua 570 B

123456789101112131415161718192021222324252627
  1. -- Copyright (c) 2012-2026 Daniele Bartolini et al.
  2. -- SPDX-License-Identifier: MIT
  3. -- From: https://web.archive.org/web/20140326122603/https://bitsquid.blogspot.com/2013/02/why-lua.html
  4. function class(klass, super)
  5. if not klass then
  6. klass = {}
  7. local meta = {}
  8. meta.__call = function(self, ...)
  9. local object = {}
  10. setmetatable(object, klass)
  11. if object.init then object:init(...) end
  12. return object
  13. end
  14. setmetatable(klass, meta)
  15. end
  16. if super then
  17. for k,v in pairs(super) do
  18. klass[k] = v
  19. end
  20. end
  21. klass.__index = klass
  22. return klass
  23. end