Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.91 KB | None | 0 0
  1. class = {}
  2. function class:New(...)
  3.     local o = {}
  4.     setmetatable(o, self)
  5.     if self.Construct then
  6.         self.Construct(o, ...)
  7.     end
  8.     return o
  9. end
  10.  
  11. function class:__call(...)
  12.     return self:New(...)
  13. end
  14.  
  15. function Class(name, baseName)
  16.     local classTable = {}
  17.     _G[name] = classTable
  18.     classTable._class_name_ = name
  19.     classTable._class_base_name_ = baseName
  20.     classTable.__index = classTable
  21.     classTable.New = class.New
  22.     local classMetaTable = class
  23.     if baseName ~= nil then
  24.         assert( _G[baseName] ~= nil )
  25.         classMetaTable = {
  26.             __index = _G[baseName],
  27.             __call = class.__call,
  28.         }
  29.     end
  30.     setmetatable(classTable, classMetaTable)
  31. end
  32.  
  33.  
  34. ------
  35.  
  36.  
  37. Class('Widget')
  38. function Widget:Construct(name)   print(name)   end
  39. function Widget:Quack()   print("meow")   end
  40.  
  41.  
  42. local w = Widget:New("hello")
  43. w:Quack()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement