From: matz@... (Yukihiro Matsumoto) Date: 1997-12-18T10:31:59+09:00 Subject: [ruby-dev:1127] Re: Object#bind まつもと ゆきひろです In message "[ruby-dev:1122] Re: Object#bind" on 97/12/17, 石塚圭樹 writes: |># UnboundMethodには乗り気でない | |えーと. UnboundMethodには乗りきではないというのは何故でしょう? きっと |深い理由があってだと思うのですが? 理由は二つです(そんなに深くない) * 実装が大変(とくにCで記述されたメソッドに関して) * 任意のメソッドと任意のオブジェクトを組み合わせることがで きることに不安を感じる |私は, BoundMethodよりもUnboundMethodに期待しているのですが... |UnboundMethodがあれば, MLFレベルで使いやすいもの)になるからです. MLFがより強力になることには同意します. |とりあえず2つの比較: | |* Object#bound_method(module, method_name) | module#method_nameをレシーバにbindされたBoundMethodを返す. | |* Module#bound_method(new_method_name, module, method_name) | module#method_nameをmodule#new_method_nameとして登録する. ええと,これらはどうしてmoduleを引数に取るんでしょう? それに後者は「できる」あるいは「できるようにしたい」と言った ことはなかったように思うのですが…. |上記2つはUnboundMethodがあれば: | |* Object#bound_method(unbound_method) |* Module#bound_method(new_method_name, unbound_method) | |とできてだいぶ単純になっていいんですが... 前者は任意のUnboundMethodと任意のオブジェクトを組み合わせて BoundMethodを作ることができることを意味しますよね.それって かなり不安なのですが.特にrubyのメソッドはsuperを使った連鎖 が行われるわけですが,それの動作がこのようなモデルを導入した 後整合性が取れる形で定義できるかどうか,今の時点では断言でき ません. |上記のように, BoundMethodはメソッド評価時には便利ですが, メソッドその |ものを取り扱うという点からはUnboundMethodの方が便利だと思うのですが... それは認めます.ただし,採用には以下の条件が満たされているこ とを希望します. * 現在のメソッドのモデルが破綻しないこと. * できるだけrubyのソースの局所的な変更で実現できること 今はどちらも満たされていないように感じるので,抵抗ありますね. まつもと ゆきひろ /:|)