- ベストアンサー
Classの中のClass定義について
Classの中のClass定義について 主にWindows環境でrubyを使用しているライトユーザーです。 ネットでソースを拝見していると、Class定義の中に更にClass定義がされているプログラムをみることがあります。以下のような感じですね。 Class Foo Class Bar …… end …… end このようにClass定義を他のClass定義の中に書くのは、どのような理由によるのでしょうか? 素朴な疑問です、ご教示いただければ嬉しいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
名前空間ですね。 class Foo class Bar …… end …… end class Hoge class Bar …… end …… end class Bar …… end だと、それぞれの、Barクラスは別物で、それぞれFoo::Bar、Hoge::Bar、Barという名前のクラスになります。ただし、クラスFooの中ではFoo::BarはBarと略記できるし、Hogeの中ではHoge::BarをBarと略記出来ます。 例えば、Fooクラスの中でしか利用しないクラスがあった場合に、他のクラスと名前の衝突を気にすることなく名前を付けることが出来るわけです。ただし、Fooクラス外からもFoo::Barのように利用することが出来るので、Fooクラス内に隠蔽できるわけではないですが。 定数などもクラスの中で定義すれば、Foo::CONSTNAME のような定数が出来ます。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
回答No.1
FooとBarの関係性を明確にできるから、思考への負担がちょっと減る。
質問者
お礼
ご回答ありがとうございました。
お礼
名前空間ですか。以前C++の初歩を勉強したときにでてきたのを思い出しました。 > 例えば、Fooクラスの中でしか利用しないクラスがあった場合 このような場合には確かに便利ですね、よくわかりました。 ご回答ありがとうございました。