2012-06-18 2 views
1

Person 클래스를 만들었지 만 코드가 정확하지만 특정 라인을 분명히하기를 원했습니다.Ruby에서 Person 클래스 만들기

내가 헷갈리는 라인은 attr_reader입니다. 왜 이것을 포함시킬 필요가 있으며 왜 각 속성 앞에 :이 필요합니까?

+2

훌륭한 대답은 여기가 발견된다 : http://stackoverflow.com/questions/5046831/why -use-ruby-attr-accessor-attr-reader-and-attr-writer – sunnyrjuneja

+1

what : before string은 무엇을 의미합니까? 상징에 관하여 읽으십시오 http://www.ruby-doc.org/core-1.9.3/Symbol.html –

답변

5

attr_reader는 루비가 자동으로 다음 메소드를 추가 할 수있는 편리한 메소드입니다 (getter 메소드). 나는. 하나의 코드 행만이이 세 가지 메소드를 추가합니다.

기호를 입력 인수로 사용하는 경우, 방법이 정의 된 방법입니다. 당신은 인스턴스 변수에 대한 공용 액세스를 허용하지 않습니다 http://ruby-doc.org/core-1.8.7/Module.html#method-i-attr_reader

def first_name 
    @first_name 
end 

def age 
    @age 
end 

def last_name 
    @last_name 
end 
1

루비에서 좀 더 볼 수, attr_reader는 방법은 인스턴스 varible에 액세스 할 수있는 쉬운 방법을 제공 Class 클래스에 추가 된 사실이다.

class Class 
    def attr_reader(*args) 
     *args.each do |arg| 
      self.class_eval("def #{arg}; @#{arg}; end") 
     end 
    end 
end 

class_eval 이상 단지 UR 클래스 정의의 코드를 삽입하고이를 평가)

관련 문제