2

下面是 alias_method 的典型用法,

class A
def say
    puts 'say'      
end

alias_method :talk, :say
end

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

4

1 回答 1

1

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

在上面的例子中,是在类alias_method上定义的。Module因此,A的实例Module可以是对 的方法调用的接收者alias_method。但是由于这个方法是私有的,所以接收者需要隐式。

于 2013-07-22T16:09:47.523 回答