У меня есть класс, который предоставляет два метода интерфейса client_options
и user_options
, и на этом уровне происхождения они эквивалентны default_options
. Я не хочу, чтобы другие разработчики реализовывали default_options
напрямую, поэтому это конфиденциально.
class Foo
def client_options
default_options
end
def user_options
default_options
end
private
def default_options
{ foo: :bar }
end
end
Чтобы сохранить некоторые строки кода, я хотел дать псевдоним методам:
class Foo
alias_method :client_options, :default_options
alias_method :user_options, :default_options
private
def default_options
{ foo: :bar }
end
end
но alias_method
использует только общедоступные методы.
Я нашел, как создавать псевдонимы частных методов, в этом блоге:
class Foo
def default_options
{ foo: :bar}
end
private :default_options
alias_method :client_options, :default_options
public :client_options
end
но это немного нечитаемо.
Есть ли более прямое решение для псевдонима частного метода?
Foo
, я был бы признателен за явные определения методов. Использованиеalias_method
может сэкономить пару строк, но усложняет понимание вашего класса. - person Stefan   schedule 13.08.2015