2010-01-16 2 views
3

Ruby에서 attr_reader 메소드의 별명을 지정할 수 있습니까? favourites 속성이있는 클래스가 있는데 미국 사용자의 경우 별칭을 favorites으로 지정하고 싶습니다. 이 일을하는 관용적 인 루비 방법은 무엇입니까?Ruby의 별칭 attr_reader

답변

6

attr_reader는 적절한 인스턴스 메소드를 생성하기 만하면됩니다. 이 :

class Foo 
    attr_reader :bar 
end 

가 동일은 : 아직 여전히

class Foo 
    attr_reader :favourites 
    alias_method :favorites, :favourites 

    # and if you also need to provide writers 
    attr_writer :favourites 
    alias_method :favorites=, :favourites= 
end 
12

예, 별칭 방법을 사용할 수 있습니다. 매우 비꼬 인 예 :

class X 
    attr_accessor :favourites 
    alias :favorites :favourites 
end 
+0

큰 하나

class Foo def bar @bar end end 

따라서 alias_method는 당신이 그것을 예상대로 작동합니다! –

+0

피터에게 감사드립니다. 'alias_method'에 대해'alias'를 선호하는 이유가 있습니까? –

+4

'alias'는 키워드이므로 alias_method보다 조금 더 낮은 수준입니다. 'alias'는 메소드를 정적으로 해결하는 반면, alias_method는 현재의'self'에 의존합니다. http://www.ruby-forum.com/topic/135598#604485를 참조하십시오 (그러나 유스 케이스의 경우에는 차이가 없습니다). – levinalex