From: Nobuyoshi Nakada Date: 2012-11-16T17:02:35+09:00 Subject: [ruby-dev:46526] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): なかだです。 At Thu, 15 Nov 2012 11:17:32 +0900, Shugo Maeda wrote in [ruby-dev:46516]: > > 私は、refined methodだけのiclassをprependする、という方略かと思っ > > ていました。 > > それでもいいかもしれませんが、他のモジュールをprependした時に挿入位置を調整したり > するのが面倒じゃないです? > また、usingを使っていないコンテキストで呼ばれた時に、メソッド探索のコストが増えるように > 思います。 そういったデメリットもたしかに考えられるのですが、例えば以下のよ うにusingのあとでさらにrefineされた場合はそのメソッドエントリは 書き換えられないのではないかという気がします。 class X end module M refine(X) {} end using M module M refine(X) {def foo;:foo;end} end p X.new.foo refine中では対象のクラスはわかっているわけだから、メソッド定義の ときにすでに書き換えられたメソッドエントリを書き直してまわればい いのかな。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦