Ruby 如何在内部区分一个类及其实例MyClass
,obj
如下所示?MyClass
允许创建实例但不允许创建实例有什么作用obj
?
MyClass = Class.new
obj = MyClass.new
Ruby 如何在内部区分一个类及其实例MyClass
,obj
如下所示?MyClass
允许创建实例但不允许创建实例有什么作用obj
?
MyClass = Class.new
obj = MyClass.new
它没有区别。MyClass
是Class
(与 的实例相同的方式obj
)的一个实例MyClass
,它实现了new
方法,Object
但没有。就这么简单——这里没有什么特别特别的事情发生,Class#new
就像任何其他方法一样。
在这里我们可以看到每个对象的类的祖先:
MyClass = Class.new
obj = MyClass.new
MyClass.class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]
obj.class.ancestors #=> [MyClass, Object, Kernel, BasicObject]