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]