クラス定義のネスト
クラスをネストすることの意味
クラス定義のネストはいつ使うべきなのか。 リファレンスマニュアルを読むと以下のように書かれていました。
クラスのネストは、意味的に関連するクラスを外側のクラス/モジュールでひ とまとまりにしたり、包含関係を表すために使用されます。
コードで書くとこんな感じ
module Foo class Bar end class Bar2 end end
関連するクラスをFooでまとめています。通常、まとめる際にはモジュールが利用されるそうです。
Barクラスを呼び出すときは以下のように書きます。
bar = Foo::Bar.new # あるいは include Foo bar = Bar.new
モジュールだけでなくクラスでも同じように書ける
クラス定義をネストすることが可能です。
class My class SweetClass end end My.new My::SweetClass.new #=>#<My:0x007f88ea0ed8d0> #=>#<My::SweetClass:0x007f88ea0ed7e0>
また、ネストしたクラスは以下のように書くことも可能です。
class My::GreatClass end
SweetClassの定義と同じ意味で使用できます。