From: Yukihiro Matsumoto Date: 2012-11-12T22:21:26+09:00 Subject: [ruby-dev:46500] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): まつもと ゆきひろです In message "Re: [ruby-dev:46497] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo):" on Mon, 12 Nov 2012 19:20:09 +0900, SASADA Koichi writes: |# いや,なんかそもそも refinement と prepend を混ぜるってのは, |# 色々と基本設計間違ってるというか,後付け感がひどい感じがする. |# 出来るけどやっちゃいけない感じ. 「出来るけどやっちゃいけない」ってのは言語設計的にはありえな い言い訳なので、「できる」か「できないか」どちらかであるべき でしょうね。 ただ、確かにrefinementで追加されたメソッドとprependされたり、 サブクラスでオーバーライドされたりしたメソッドと両方があると、 わかりにくいのは確かなので、そこについてより考察したほうが良 いだろうという示唆は理解できます。 特に継承されたりincludeされたりしてもrefinementが有効である と明言してしまったので、refinementがよりオーバーライドによる 影響を受けやすくなったと言えます。 うーむ、いっそrefinementで追加されたメソッドは常に最優先にす べきなのかなあ。サブクラスでオーバーライドされていたとしても refinementされたメソッド優先。どうやって実装するのかにわかに はわからないけど。 まつもと ゆきひろ /:|)