以下是alias_method的典型用法,
class A
def say
puts 'say'
end
alias_method :talk, :say
end
alias_method是在Module类中定义的私有实例方法,但在上面的代码中,它更像是类方法,而不是实例方法,为什么上面的代码有效?
答案 0 :(得分:0)
正如您正确注意到的那样,它是A
的类方法,同时也是Module
类的实例方法,其中Class
类是子类。类方法不是实例方法所独有的。所有类方法都是Class
类的实例方法,除非它们是单例类的方法。
在上面的示例中,alias_method
类定义了Module
。因此,A
(Module
的实例可以是alias_method
方法调用的接收者。但由于此方法是私有的,接收器需要隐式。