-->

混乱与`Class`对象中定义单方法(Confusion with singleton method

2019-10-17 20:15发布

我知道什么特殊方法可以通过对象,上定义它被调用。 现在,在下面的示例中C也是一个对象Class和单方法a_class_method所定义的Class对象C 。 那么,如何另一个Class对象D能叫a_class_method

如何对象individuation的原则也适用于这个例子吗?

class C
end
#=> nil

def C.a_class_method
 puts "Singleton method defined on #{self}"
end
#=> nil

C.a_class_method
#Singleton method defined on C
#=> nil

class D < C
end
#=> nil

D.a_class_method
#Singleton method defined on D
#=> nil

Answer 1:

以及当你做了<你从C级这样做d级d继承将从C类得到任何东西如果你想知道所有的D'的父母是你可以做

puts "D's parent Classes = #{D.ancestors.join(',')}"

这将给你

D's parent Classes = D,C,Object,Kernel

因此,即使d将是一个单独的类是一个子类C的这是什么让它使用C中定义的方法



Answer 2:

之所以说a_class_method可以是:

D.singleton_class.superclass == C.singleton_class
 # => true


文章来源: Confusion with singleton method defined on `Class` object
标签: ruby ruby-2.0