cocos2dx-lua里面class的实现

cocos2dx-lua里面class的实现,第1张

概述function class(classname, ...) local cls = {__cname = classname} -- 设置类的名字 local supers = {...} for _, super in ipairs(supers) do -- 遍历第二个参数 local superType = type(super)
function class(classname,...)    local cls = {__cname = classname}   -- 设置类的名字    local supers = {...}    for _,super in ipairs(supers) do  -- 遍历第二个参数        local superType = type(super)        if superType == "function" then   -- 如果参数是一个函数  则将这个函数设置为类的__create函数            assert(cls.__create == nil)            cls.__create = super        elseif superType == "table" then              if super[".isclass"] then  -- 如果是一个c++的对象                assert(cls.__create == nil)                cls.__create = function() return super:create() end  __create函数就等于调用c++类的create函数            else                cls.__supers = cls.__supers or {}                   cls.__supers[#cls.__supers + 1] = super                if not cls.super then                    -- set first super pure lua class as class.super                    cls.super = super                end            end        else            error(string.format("create class \"%s\" with invalID super type",classname),0)        end    end    cls.__index = cls    if not cls.__supers or #cls.__supers == 1 then -- 如果只有一个父类 则设置Metatable为一个表        setMetatable(cls,{__index = cls.super})    else        setMetatable(cls,{__index = function(_,key)  -- 如果有多个父类,则设置Metatable为一个函数,通过函数查找对应的函数            local supers = cls.__supers             for i = 1,#supers do                local super = supers[i]                if super[key] then return super[key] end            end        end})    end    if not cls.ctor then        cls.ctor = function() end    end    cls.new = function(...)        local instance        if cls.__create then            instance = cls.__create(...)        else            instance = {}        end        setMetatableindex(instance,cls)        instance.class = cls        instance:ctor(...)        return instance    end    cls.create = function(_,...)        return cls.new(...)    end    return clsend
总结

以上是内存溢出为你收集整理的cocos2dx-lua里面class的实现全部内容,希望文章能够帮你解决cocos2dx-lua里面class的实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1085459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存