Monday, May 14, 2012

개별 instance에 특화된 member function 넣기

 Character = {}  
 Character.new = function(name, HP)  
      local instance = {}  
      instance.name = name  
      instance.HP = HP  
        
      function instance:decreaseHP(delta)  
           self.HP = self.HP - delta  
      end  
        
      function instance:printMe()  
           print(self.name, self.HP)  
      end  
             
      return instance  
 end  
   
 local hero = Character.new("Luke", 10)  
 local vader = Character.new("Vader", 20)  
 local soldier = Character.new("Soldier", 5)  
 hero:printMe()  
 vader:printMe()  
 soldier:printMe()  
   
 function vader:talk()  
      print("I am your father")  
 end  
   
 function soldier:printMe()  
      print(self.name, self.HP, "March!")  
 end  
   
 hero:decreaseHP(1)  
 vader:decreaseHP(2)  
 soldier:decreaseHP(4)  
 vader:talk()  
 hero:printMe()  
 vader:printMe()  
 soldier:printMe()  
Lua에서는 이처럼 특정 오브젝트만이 가지는 함수를 넣을 수도 있고,
같은 클래스라도 오브젝트 별로 다른 함수를 넣어줄 수도 있다.
(애초에 language 안에 클래스라는 개념이 없기 때문에 가능한 일)

No comments:

Post a Comment