0

Ruby 如何在内部区分一个类及其实例MyClassobj如下所示?MyClass允许创建实例但不允许创建实例有什么作用obj

MyClass = Class.new
obj = MyClass.new
4

1 回答 1

2

它没有区别。MyClassClass(与 的实例相同的方式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]
于 2013-02-11T05:20:06.620 回答