1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- local Object = {}
- Object.__index = Object
- function Object:new()
- end
- function Object:extend()
- local cls = {}
- for k, v in pairs(self) do
- if k:find("__") == 1 then
- cls[k] = v
- end
- end
- cls.__index = cls
- cls.super = self
- setmetatable(cls, self)
- return cls
- end
- function Object:implement(...)
- for _, cls in pairs({...}) do
- for k, v in pairs(cls) do
- if self[k] == nil and type(v) == "function" then
- self[k] = v
- end
- end
- end
- end
- function Object:is(T)
- local mt = getmetatable(self)
- while mt do
- if mt == T then
- return true
- end
- mt = getmetatable(mt)
- end
- return false
- end
- function Object:__tostring()
- return "Object"
- end
- function Object:__call(...)
- local obj = setmetatable({}, self)
- obj:new(...)
- return obj
- end
- return Object
|