Возможно ли использовать псевдоним метода attr_reader
в Ruby? У меня есть класс с favourites
, который я хочу добавить к favorites
для американских пользователей. Каков идиоматический способ Ruby сделать это?Alias attr_reader in Ruby
3
A
ответ
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
все же еще один большой! –
Спасибо, Питер. Есть ли причина предпочесть «алиас» для «alias_method»? –
'alias' - это ключевое слово и, следовательно, немного более низкоуровневое, чем' alias_method'. 'alias' будет решать статические методы, а' alias_method' зависит от текущего 'self'. См. Http://www.ruby-forum.com/topic/135598#604485 (но для вашего случая использования это не имеет значения) – levinalex