Monday, May 14, 2012

Lua에서 클래스 정의하는 법 (3) Closure 방식

다음은 lua-users.org/wiki 의 Object Orientation Closure Approach 에 나오는 스타일을 따라한 것. (2) Table 방식과의 performance 비교도 되어 있음. 결론은, 성능상으로는 둘 다 비슷하므로 코딩 스타일에 따라 선택하는 게 좋다는 것.
 Hero = {}  
 Hero.new = function(name, HP)  
      local instance = {}  
      local maxHP = 100  
      local name_ = name or "anonymous"  
      local HP_ = HP or maxHP  
   
      instance.setHP = function(hp)  
           HP_ = hp  
      end  
        
      instance.printMe = function()  
           print("Hero : " .. name_ , "HP=" .. HP_)  
      end  
   
      return instance  
 end  
   
 hero1 = Hero.new(nil, nil)  
 hero2 = Hero.new("Mika", 80)  
 hero1.printMe()  
 hero2.printMe()  
   
 hero2.setHP(70)  
 hero1.printMe()  
 hero2.printMe()  
키워드 : OOP

No comments:

Post a Comment