the ruby way中
「第5章 RubyにおけるOOPと動的型操作」読み中。これまでのところ、技巧的にはRubyレシピブックとかなり重複している気がしていて、「便利なクラスを覚えたなぁ」ということは無いのだけど、Rubyの根底に流れるポリシーが染み込んでくるようで嬉しい。特に5章から面白くなってきた。
ところで、クラス変数の扱いを説明する箇所で以下のようなサンプルコードが出てくる(何となく書き換えているけど)。
mitsu@garlic$ cat hoge2.rb class Isono def Isono.item puts "called item()" class_eval "@@item" end def Isono.item=(x) puts "called item=(#{x})" class_eval "@@item = x" end end class Katsuo < Isono @@item = 'bouzu' end class Tarao < Isono @@item = 'Haaai' end p Katsuo.item p Tarao.item mitsu@garlic$ ruby hoge2.rb called item() "bouzu" called item() "Haaai"
本に記載されているサンプルコードでは、「def Isono.item=(x)」が使われないのではないかしら?
「def Isono.item=(x)」をはずしても同様に動作するし。Katsuo.itme = 'nakajima'とかしない限り、このメソッドが呼ばれない気が…