From: gotoken@... (GOTO Kentaro) Date: 1998-06-23T08:35:19+09:00 Subject: [ruby-list:8464] Re: how to use delegate ごとけんです In message "[ruby-list:8462] Re: how to use delegate" on 98/06/22, IWAOKA Masahiro writes: >岩岡です。 >In message <199806190835.RAA04685@picachu.netlab.co.jp> > matz@netlab.co.jp (Yukihiro Matsumoto) writes: >> def DelegateClass(superclass) >> klass = Class.new >> methods = superclass.instance_methods >> methods -= ["__getobj__","to_s","nil?","to_a","hash","dup","==","=~"] > >これは、これらのメソッドを再定義しないようにしてるんだと思うのです >が、to_s だけは再定義してやらないと、 てゆーか、この -= の右辺は勝手にしちゃいけないような(ですよね?) もともと(?) delegate.rb に preserved -= ["__getobj__","to_s","nil?","to_a","hash","dup","==","=~"] という行があって、これは、preserved (デレゲートしないもの)から 右辺を抜いてるんだけど(つまり右辺の要素はデレゲートされるかも)、 DelegateClass にある methods -= ["__getobj__","to_s","nil?","to_a","hash","dup","==","=~"] はデレゲートするものから抜いてるわけだから、意味が逆です。 で、結局ぼくはこの "methods -= ..." っていう行そのものが 勘違いだと思うのですが、全部を @obj に任していいものか どうかは分りません。 -- gotoken