我是红宝石的初学者。这是两个不同的分类Class
& Object
。我不明白拥有Object
. 对象是建立在调用类的构造函数(或new
方法)之上的,那么为什么需要单独的Object
类呢?请澄清我关于Class
&Object
类。
问问题
86 次
2 回答
2
ruby 中的一切都是对象,因此Class
:
irb > Class.is_a? Object
=> true
每个对象都有一个类,所以Object
:
irb > Object.class === Class
=> true
甚至Class
它本身也有一个类:
irb > Class.class === Class
=> true
于 2013-06-18T08:39:12.420 回答
0
为什么需要单独的
Object
课程?
你有不同的类Class
,Object
因为类和对象不一样。
在 Ruby 中,一切都是对象,每个对象都有一个类,但并非每个对象都是一个类。
这将创建一个新类:
class MyClass
end
MyClass
是一个类:
MyClass.is_a? Class #=> true
类对象具有特定的方法,例如superclass
. 这个方法是在Class
类中实现的,因为MyClass
是一个类,所以它会响应它:
MyClass.superclass #=> Object
MyClass
另一方面的实例不是类:
my_instance = MyClass.new #=> #<MyClass:0x007f7f5c041d10>
my_instance.is_a? Class #=> false
它不响应superclass
:
my_instance.superclass #=> NoMethodError: undefined method `superclass'
但当然它有一个类,即MyClass
:
my_instance.class #=> MyClass
两者,MyClass
和my_instance
都是对象:
MyClass.is_a? Object #=> true
my_instance.is_a? Object #=> true
MyClass.object_id #=> 70092490725660
my_instance.object_id #=> 70092490673800
于 2013-06-18T12:16:51.000 回答