0

Class には、Class のインスタンスである Superclass BasicObject を持つスーパークラス Object を持つスーパークラス Module があります。Class も Module のサブクラスです。

私はこれに関して本当に混乱しています(上記は、上記の各オブジェクトで .class および .superclass メソッドを使用して収集されたものです)

ここで何が起こっているのか正確に説明できる人はいますか?

4

1 に答える 1

0

「インスタンスの」というフレーズは、ここで行う必要がある頭の体操の小さいながらも重要な部分です。

それと、タイプ のオブジェクトClass、および というクラスObjectです。

少なくともゆっくりと繰り返しながらこれらを理解できれば、あなたはそれを理解しています:

  • Object.newクラスObjectのインスタンスを作成します

  • Objectそれ自体がクラスClassのオブジェクトであるクラスObjectへの参照です。

  • ClassクラスClassの参照であり、クラスClassのオブジェクトでもあります(!)

  • Class.newクラスClassのインスタンスを作成します。

    • これは、あなたが書くときにボンネットの下で起こることの一部ですclass Foo
    • 実際Foo = Class.new( String )、ほとんど同じですclass Foo < String; end
  • 、 、のクラス階層はClass、Ruby での実装の詳細です。ほぼすべてのクラスが から継承されているため、これも当然のことです。ModuleObjectObjectClass

残りは繰り返しの使用と経験です。

ここで別のことが起こっていることに注目する価値があります: 入力するコードのラベルはシンボル/変数名であり、型を持ち、データを含む基本オブジェクトへのポインターです。これらのラベルを直接使用する必要はありません。他の Ruby 変数とほとんど同じです。

o_klass = Object
o_instance = o_klass.new
o_instance.class
 => Object
于 2013-07-30T18:53:42.020 に答える