ruby初心者です。ここに 2 つの異なるクラス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
Object
どちらもクラスのメソッドに応答します。たとえば、次のようになりますobject_id
。
MyClass.object_id #=> 70092490725660
my_instance.object_id #=> 70092490673800
于 2013-06-18T12:16:51.000 に答える