Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class = {}
- function class:New(...)
- local o = {}
- setmetatable(o, self)
- if self.Construct then
- self.Construct(o, ...)
- end
- return o
- end
- function class:__call(...)
- return self:New(...)
- end
- function Class(name, baseName)
- local classTable = {}
- _G[name] = classTable
- classTable._class_name_ = name
- classTable._class_base_name_ = baseName
- classTable.__index = classTable
- classTable.New = class.New
- local classMetaTable = class
- if baseName ~= nil then
- assert( _G[baseName] ~= nil )
- classMetaTable = {
- __index = _G[baseName],
- __call = class.__call,
- }
- end
- setmetatable(classTable, classMetaTable)
- end
- ------
- Class('Widget')
- function Widget:Construct(name) print(name) end
- function Widget:Quack() print("meow") end
- local w = Widget:New("hello")
- w:Quack()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement