Lua 대상 구현

1264 단어
function baseClass(base)    
     local cls = {}    
     if base then    
        cls = {}    
        for k,v in pairs(base) do cls[k] = v end    
        cls.base = base  
    else    
        cls = {ctor = function() end}    
    end    
    
    --cls.__cname = classname    
    cls.__index = cls    
    
    function cls:new(...)    
        local instance = setmetatable({}, cls)    
        local create    
        create = function(c, ...)    
             if c.base then  
                  create(c.base, ...)    
             end    
             if c.ctor then    
                  c.ctor(instance, ...)    
             end    
        end    
        create(instance, ...)    
        --instance.class = cls    
        return instance    
    end    
    return cls    
end

이 종류는 주로 기류와 파생류를 귀속시키고ctor구조함수를 호출하여 다음과 같이 사용한다
local base = baseClass()  
  
function base:ctor()  
end  
  
function base:funcA()  
end  
  
function base:funcB(value)  
end  
  
local top = baseClass(base)  
  
function top:ctor()  
end  
  
function top:funcB(value)  
    self.base.funcA(self, value)  
end

상위 클래스를 호출하는 방법은 "."을 사용해야 합니다.':'를 쓰지 마세요. 베이스 클래스 구현 문제 때문에 문법 설탕을 사용할 수 없어요.

좋은 웹페이지 즐겨찾기