0
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
method和Object
没有。这非常简单 - 没有什么特别的事情发生在这里,Class#new
与其他方法非常相似。
在这里我们可以看到每个对象的类的祖先:
MyClass = Class.new
obj = MyClass.new
MyClass.class.ancestors #=> [Class, Module, Object, Kernel, BasicObject]
obj.class.ancestors #=> [MyClass, Object, Kernel, BasicObject]
确定。但它如何区分MyClass(Class的实例)和obj(MyClass的实例)? – 2013-02-11 05:35:31
@ surase.prasad就是这样:一个是'Class'的实例,另一个不是。没有特别的区别。 – 2013-02-11 05:36:21
通常,我们被教会,类和对象是不同的,但红宝石通过说所有东西都是对象来打破它。所以有些对象是类(通过用户的视图),有些对象是对象(如问题中的obj)。我想kwn,红宝石如何在内部区分类(String,fixnum,MyClass)和对象(obj,“prasad”) – 2013-02-11 05:39:00