From: SASADA Koichi Date: 2010-06-17T10:45:11+09:00 Subject: [ruby-dev:41629] Re: [Feature:trunk] argument delegation  ささだです. (2010/06/17 6:31), Yukihiro Matsumoto wrote:: > |argument delegation は、 > | > |(1) ブロックを引き継がせたいだけ (引数は変えたい) ときに不便 > |(2) 引数の変数へうっかり代入して、間違った引数が渡る事件が多発しそう > |(3) define_method でサポートできていない (将来的にされる予定はある?) > | > |ので、あんまり好きじゃないです。 > > (1) については、ブロックを引き継がせたい時には、明示的にブロッ > クを引き渡せばよい(ひとつのことをしたいときに、ひとつのこ > とをすればよい。冗長性はない)ので、手当ての必要があるか > どうか疑問です。今回の動機は「ひとつのことをするのに、ふ > たつのことを書かないといけない」という冗長性ですから。 > > (2) これはsuperでもそうですよね。昔、superは引数の変数に代入 > してもそのまま渡る仕様だったのですが、実装上の問題であき > らめました。 > > (3) 将来的には、define_methodでもサポートされるべきだと思いま > す。できてないのは実装上の制約だと思ってください。  「実装上の制約」はそのとおりで,言語デザインとしてあるべきではないと思 います. (実装が簡単かどうかは別の話ですけど)  それは置いといて,これ,そんなに使うんでしょうか.あまり使わない機能 に,新しい記号を入れるのは抵抗があります.とくに,foo(...) とか,擬似 コードでよく使うので,抵抗があります.文脈でわかるっちゃわかるんですが. 利用例: http://rurema.clear-code.com/query:%28...%29/  遠藤さんの > |ブロックを引き継がせるのが面倒くさいという動機はとてもよくわかるので、 > | > | foo(a, b, c, &) > | > |と書いたらこのコンテキストのブロックを渡す、というのはどうでしょうか。 の話は,ああ,あったら使うかも,と思いました. -- // SASADA Koichi at atdot dot net