您是否使用别名方法来添加更多调用方法的方法(如长度和大小),还是有其他用途?
答案 0 :(得分:3)
alias_method调用对于重新实现某些内容非常有用,但保留了原始版本。还有来自Rails的alias_method_chain让这种事情变得更加容易。
alias_method也会派上用场,当你有许多行为最初相同但未来可能会分歧时,你至少可以粗略地开始这些行为。
def handle_default_situation
nil
end
%w[ poll push foo ].each do |type|
alias_method :"handle_#{type}_situation", :handle_default_situation
end
答案 1 :(得分:3)
是
它通常用于在覆盖现有方法之前保留现有方法的句柄。 (人为的例子)
鉴于这样的课程:
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
的工作方式)
但是,对于这个用例,use inheritance and modules to your advantage通常更合适。
如果你绝对需要重新定义现有类中的行为(或者如果你想实现像alias_method_chain这样的东西),那么alias_method
是一个很有用的工具。