1

Ruby では、次のように記述できます。

Dog = Class.new

ここでDogObject、 のインスタンスであるClassです。

また、私は書くことができます

fido = Dog.new

が の場合にのみ可能DogですClass

DogここClassはですかObject?

4

4 に答える 4

5

Ruby のすべてはObject(ブロックを除く) です。そして、DogここにもClass.

Dog = Class.new
fido = Dog.new

したがって、答えは両方です。

于 2013-05-13T07:45:43.407 に答える
5

以下のように、オブジェクト自体に、それらがどこに属しているかを尋ねます。

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

于 2013-05-13T07:49:56.750 に答える
1

一部の初心者が繰り返し行う間違いを犯していると思います。「is」の2 つの意味を混同しています。

  • A はBのインスタンスであり、
  • A はBのサブクラスです。

あなたのケースで、

  • Dogインスタンス(ただしサブクラスではない)Classであり、
  • Dogサブクラスです (ただし、インスタンスではありません) Object

したがって、さまざまな意味で、それは でClassあり、Objectです。

「Ruby のすべてが である」と言うときObject、それはすべてが のインスタンスであるという意味ではありませんObject。これは、すべてが の (再帰的) サブクラスのインスタンスであることを意味しますObject

于 2013-05-13T10:54:22.060 に答える