function class(super, classname)
? ? local superType = type(super)
? ? local cls
? ? if superType ~= "function" and superType ~= "table" then
? ? ? ? superType = nil
? ? ? ? super = nil
? ? end
? ? if superType == "function" or (super and super.__ctype == 1) then
? ? ? ? -- inherited from native C++ Object
? ? ? ? cls = {}
? ? ? ? if superType == "table" then
? ? ? ? ? ? -- copy fields from super
? ? ? ? ? ? for k,v in pairs(super) do cls[k] = v end
? ? ? ? ? ? cls.__create = super.__create
? ? ? ? ? ? cls.super ? ?= super
? ? ? ? else
? ? ? ? ? ? cls.__create = super
? ? ? ? ? ? cls.ctor = function() end
? ? ? ? end
? ? ? ? cls.__cname = classname
? ? ? ? cls.__ctype = 1
? ? ? ? function cls.new(...)
? ? ? ? ? ? local instance = cls.__create(...)
? ? ? ? ? ? -- copy fields from class to native object
? ? ? ? ? ? for k,v in pairs(cls) do instance[k] = v end
? ? ? ? ? ? instance.class = cls
? ? ? ? ? ? instance:ctor(...)
? ? ? ? ? ? return instance
? ? ? ? end
? ? else
? ? ? ? -- inherited from Lua Object
? ? ? ? if super then
? ? ? ? ? ? cls = clone(super)
? ? ? ? ? ? cls.super = super
? ? ? ? else
? ? ? ? ? ? cls = {ctor = function() end}
? ? ? ? end
? ? ? ? cls.__cname = classname
? ? ? ? cls.__ctype = 2 -- lua
? ? ? ? cls.__index = cls
? ? ? ? function cls.new(...)
? ? ? ? ? ? local instance = setmetatable({}, cls)
? ? ? ? ? ? instance.class = cls
? ? ? ? ? ? instance:ctor(...)
? ? ? ? ? ? return instance
? ? ? ? end
? ? end
? ? function cls.attach(instance, ...)
? ? ? ? for k,v in pairs(cls) do instance[k] = v end
? ? ? ? instance.class = cls
? ? ? ? instance:ctor(...)
? ? ? ? return instance
? ? end
? ? function cls.isSubClassOf(class)
? ? ? ? local classTable = cls
? ? ? ? while classTable do
? ? ? ? ? ? if classTable == class then
? ? ? ? ? ? ? ? return true
? ? ? ? ? ? else
? ? ? ? ? ? ? ? classTable = classTable.super
? ? ? ? ? ? end
? ? ? ? end
? ? ? ? return false
? ? end
? ? function cls.isTypeOf(instance, class)
? ? ? ? return cls.isSubClassOf(class)
? ? end
? ? return cls文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-507977.html
end文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-507977.html
到了這里,關(guān)于lua 實(shí)現(xiàn)面向?qū)ο蟮奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!