Да.
Он часто используется для сохранения дескриптора существующих методов перед их переопределением. (надуманный пример)
Учитывая класс как это:
class Foo
def do_something
puts "something"
end
end
Вы можете увидеть код, который добавляет новое поведение, вот так:
class Foo
def do_something_with_logging
puts "started doing something"
do_something_without_logging # call original implementation
puts "stopped doing something"
end
alias_method :do_something_without_logging, :do_something
alias_method :do_something, :do_something_with_logging
end
(именно так работает alias_method_chain
)
Однако для этого варианта использования часто нецелесообразно использовать наследование и модули в ваших интересах .
Тем не менее, alias_method
- это полезный инструмент, если вам абсолютно необходимо переопределить поведение в существующем классе (или если вы хотите реализовать что-то вроде alias_method_chain)