さまざまなRubyの本を読んでいると、Rubyクラスを他のRubyクラスまたはモジュール内で定義できることに気付きました。クラス内のクラスの例を次に示します。
class Outerclass
def foobar
puts "FOOBAR"
end
class Innerclass
def barfoo
puts "BARFOO"
end
end
end
これを概念的に理解するためにIRBで実行したコードを次に示します。
oc = Outerclass.new # => #<Outerclass:0x00000100a46478>
Outerclass.instance_methods(false) # => [:foobar]
ic = Outerclass::Innerclass.new # => #<Outerclass::Innerclass:0x00000100a0b120>
ic = Outerclass::Innerclass.instance_methods(false) # => [:barfoo]
これが私の質問です:
ルビーインタープリターが上記のクラス定義コードに最初に遭遇したとき、それは私が書いたメソッドを通過し、それをどこかに保存しますか?Outerclass定義内でインスタンスメソッドが呼び出されないため、インスタンスメソッド「foobar」は実際には実行されないことを知っています。
最初の質問に便乗して、RubyがクラスInnerclassに遭遇したときはどうでしょうか。ここでは何が起きるのですか?
一般的に、クラス内にクラスを持ちたい理由は何ですか?これを行うことに何か利点はありますか?
Outerclassのインスタンスは、クラスInnerclassについて何か知っていますか?
Innerclassのインスタンスは、クラスOuterclassについて何か知っていますか?
あなたが提供できるどんな助けにも感謝します!