From: "石井 大海" Date: 2005-11-20T00:25:35+09:00 Subject: [ruby-list:41570] 別クラスのメソッドを横取り お久しぶりで、konnです。 delegateを使っていて気付いたのですが、例えば、 class A def gogo back puts "hihi" end end b = SimpleDelegator.new(A.new) def b.back puts "not!" end と、したときに、b.gogoを実行すると、 NameError: undefined local variable or method `back' for # from (irb):4:in `gogo' from (irb):30 とでてしまいます。 つまり、backもAで定義しなくてはならないと云うことで すが、委任もとのメソッドを委任先から呼び出す方法はないのでしょう か? これに対して、まず私が考えたのは 1.delegate.rb の使用をやめる 2.bのmethod_missingをつかって、存在しないメソッド を確認(?)する 3.それがAのインスタンスメソッドとして定義されていたら、 そのメソッドをbにコピーする というものでした(判りにくくてすいません)。こうすれ ば、backが呼び出されると思います。 しかし、これを実現できそうな機能は見つかりません。 まあ、Aもbに委任させればいいと云えばそれまでですが、 余りスマートとは思えません。 やはり、これは不可能なことなんでしょうか?また、別な解決策はある のでしょうか? どなたかご存じでしたら、お教え下さい。