我是红宝石的初学者。这是两个不同的分类Class& Object。我不明白拥有Object. 对象是建立在调用类的构造函数(或new方法)之上的,那么为什么需要单独的Object类呢?请澄清我关于Class&Object类。
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 回答