为什么alias_method是一个实例方法?

时间:2013-07-22 16:01:27

标签: ruby

以下是alias_method的典型用法,

class A
def say
    puts 'say'      
end

alias_method :talk, :say
end

alias_method是在Module类中定义的私有实例方法,但在上面的代码中,它更像是方法,而不是实例方法,为什么上面的代码有效?

1 个答案:

答案 0 :(得分:0)

正如您正确注意到的那样,它是A的类方法,同时也是Module类的实例方法,其中Class类是子类。类方法不是实例方法所独有的。所有类方法都是Class类的实例方法,除非它们是单例类的方法。

在上面的示例中,alias_method类定义了Module。因此,AModule的实例可以是alias_method方法调用的接收者。但由于此方法是私有的,接收器需要隐式。