2010-01-16 6 views
3

Возможно ли использовать псевдоним метода attr_reader в Ruby? У меня есть класс с favourites, который я хочу добавить к favorites для американских пользователей. Каков идиоматический способ Ruby сделать это?Alias ​​attr_reader in Ruby

ответ

6

attr_reader просто генерирует соответствующие методы экземпляра. Это:

class Foo 
    attr_reader :bar 
end 

идентична:

class Foo 
    def bar 
    @bar 
    end 
end 

поэтому alias_method работает, как вы ожидали бы его:

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

все же еще один большой! –

+0

Спасибо, Питер. Есть ли причина предпочесть «алиас» для «alias_method»? –

+4

'alias' - это ключевое слово и, следовательно, немного более низкоуровневое, чем' alias_method'. 'alias' будет решать статические методы, а' alias_method' зависит от текущего 'self'. См. Http://www.ruby-forum.com/topic/135598#604485 (но для вашего случая использования это не имеет значения) – levinalex