2013-02-11 87 views

回答

2

它没有区别。 MyClassClass的一个实例(与objMyClass的实例相同),它实现了new methodObject没有。这非常简单 - 没有什么特别的事情发生在这里,Class#new与其他方法非常相似。

在这里我们可以看到每个对象的类的祖先:

MyClass = Class.new 
obj = MyClass.new 

MyClass.class.ancestors #=> [Class, Module, Object, Kernel, BasicObject] 
obj.class.ancestors  #=> [MyClass, Object, Kernel, BasicObject] 
+0

确定。但它如何区分MyClass(Class的实例)和obj(MyClass的实例)? – 2013-02-11 05:35:31

+1

@ surase.prasad就是这样:一个是'Class'的实例,另一个不是。没有特别的区别。 – 2013-02-11 05:36:21

+0

通常,我们被教会,类和对象是不同的,但红宝石通过说所有东西都是对象来打破它。所以有些对象是类(通过用户的视图),有些对象是对象(如问题中的obj)。我想kwn,红宝石如何在内部区分类(String,fixnum,MyClass)和对象(obj,“prasad”) – 2013-02-11 05:39:00