内部クラスと外部クラス
Javaの本を読んで出てきたので,ちょっとRubyでも勉強してみる.
class Hoge def initialize @x = "hoge" @fu = Fuga.new(@x) @pi = Piyo.new(@x) end def hoge @fu.hogera @pi.hogera puts "hoge" + @x end class Fuga def initialize(x) @x = x end def hogera puts @x = "fuga" + @x end end class Piyo def initialize(x) @x = x end def hogera puts @x = "piyo" + @x end end end
どういう話かというと,内部クラスから外部クラスのインスタンス変数を見に行けるっていう話.始めはFugaにもPiyoにもinitializeは書いていなかったけれど,「@xなんてネーよ」って怒られた.いや,その頃から嫌な予感はしていたんだけれど.
で,実行結果.理想は,
fugahoge piyofugahoge hogepiyofugahoge
現実は,
fugahoge piyohoge hogehoge
できないのね.参照じゃなくて複製を渡すんだなぁ.なんていうか,ピッケル本でも読んでちゃんとRubyの勉強をしてたらこんな事で迷わないのに,って思った.読みたいのは山々だけれど,今はJavaの勉強をしなければならないのです.