Ruby では、次のように記述できます。
Dog = Class.new
ここでDog
はObject
、 のインスタンスであるClass
です。
また、私は書くことができます
fido = Dog.new
が の場合にのみ可能Dog
ですClass
。
Dog
ここClass
はですかObject
?
Ruby では、次のように記述できます。
Dog = Class.new
ここでDog
はObject
、 のインスタンスであるClass
です。
また、私は書くことができます
fido = Dog.new
が の場合にのみ可能Dog
ですClass
。
Dog
ここClass
はですかObject
?
Ruby のすべてはObject
(ブロックを除く) です。そして、Dog
ここにもClass
.
Dog = Class.new
fido = Dog.new
したがって、答えは両方です。
以下のように、オブジェクト自体に、それらがどこに属しているかを尋ねます。
Dog = Class.new
fido = Dog.new
Dog.instance_of? Class #=> true
fido.instance_of? Class #=> false
fido.instance_of? Dog #=> true
Dog.superclass #=> Object
Dog.is_a? Object #=> true
Dog.is_a? Class #=> true
詳細については、Object model Documentation
一部の初心者が繰り返し行う間違いを犯していると思います。「is」の2 つの意味を混同しています。
あなたのケースで、
Dog
のインスタンス(ただしサブクラスではない)Class
であり、Dog
のサブクラスです (ただし、インスタンスではありません) Object
。したがって、さまざまな意味で、それは でClass
あり、Object
です。
「Ruby のすべてが である」と言うときObject
、それはすべてが のインスタンスであるという意味ではありませんObject
。これは、すべてが の (再帰的) サブクラスのインスタンスであることを意味しますObject
。