4

私にはクラスEntityがあり、このクラス内にはConfigという内部クラスがありました。

class Entity
 class Config
 end
end

Configクラスはかなり大きくなったので、それを独自のファイルに取り出すことにしました。ただし、それでも名前空間を保持したかったので、Configクラスの前にEntity ::を付けて、2つの異なるファイルに2つのクラスを残しました。

 #In entity.rb file
 class Entity
   require 'entity_config.rb'
 end

 #In entity_config.rb file
 class Entity::Config
 end

これで、Entity::Config.newを使用して構成をインスタンス化できます。

ただし、そのようなクラス名の名前空間の意味はわかりません。誰かが私にここで実際に何が起こっているのか説明できますか?

4

1 に答える 1

4

提供するのは定数の名前であるため、演算子を使用して名前を指定することは、最初class Somethingに外部クラスを開き、その方法で内部クラスを作成することと同じです。演算子は、クラスまたはモジュールの外部からクラスまたはモジュール内の定数にアクセスするための単なる方法です。たとえば、次のようなものは完全に有効です。Something::::

class Outer
  class Inner
  end

  class Inner::EvenMoreInner
  end
end

class Outer::Inner::EvenMoreInner::InnerMost
end

注意してください、あなたはただ書いclass Some::New::Class::Hierarchyて、すべての含まれているクラスを自動的に作成させることはできません。つまりSome::New::Class、最初に存在する必要があります。これが、質問に対するコメントにあなたが書いたコードの正確な順序を尋ねた理由です。

于 2012-11-06T15:54:58.607 に答える