ruby初心者です。ここに 2 つの異なるクラスClass&がありObjectます。持つ目的がわかりませんObject。オブジェクトは、クラスのコンストラクター (またはメソッド) を呼び出して構築されたものですが、なぜ別のクラスnewが必要なのですか? &クラスObjectについて教えてください。ClassObject
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 に答える