From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1997-12-17T22:07:16+09:00 Subject: [ruby-dev:1122] Re: Object#bind けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :01088 ] the message: "[ruby-dev:1088] Re: Object#bind ", on Dec/15 12:32(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|* BoundMethod -- クラスまたはオブジェクトに属するメソッド本体(とレシー >| バの組) >|* UnboundMethod -- クラスやオブジェクトから独立なメソッド本体 > >いや,ここまでは一致しているのですが. 一致していなかったみたいですね. >|>|* Module#bound_instance_method(method_name) >|とすると, Mod#fooがModに束縛されたまま取り出される. ってイメージです. > >「Mod#fooがModに束縛されている」状態ってどういうものなんでしょ >う? インスタンスがあってはじめて束縛できるのではないでしょ >うか. うーん. そういわれるとそうか... このメソッドを評価するためにはまたレシー バを指定しなくてはならない... >|>|* Object#unbound_method(method_name) >|>| レシーバのメソッドmethod_nameを持つUnboundMethodを取り出す. >|特異メソッドのことを考えたのですが? そうです. 頭は常にそこにあります(^^;;; >MOP関係は特異メソッドについて > > class < unbound_method > end > >を考えています.ご不満? なるほど. それでいいです. >|modにバインドされたBoundMethodを生成するメソッドです. >|BoundMethod#unboundの逆演算です. > >objでしょ.それなら判る.「モジュールに束縛された」ってやっ >ぱり判んないです. ですね. 忘れて下さい... >|>|* UnboundMethod#bind(obj) >|>| objのメソッドとしてBoundMethodを取り出す. >|ん? ん? BoundMethod/UnboundMethodって無名メソッドだと思っていたのです >|が?? > >ちゃいます.「メソッドの本体(どこかに束縛されている/いたこと >がある)」と「無名のメソッド(どこにも束縛されていない)」は天 >と地ほど違います. > ># UnboundMethodには乗り気でない えーと. UnboundMethodには乗りきではないというのは何故でしょう? きっと 深い理由があってだと思うのですが? 私は, BoundMethodよりもUnboundMethodに期待しているのですが... UnboundMethodがあれば, 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として登録する. 上記2つはUnboundMethodがあれば: * Object#bound_method(unbound_method) * Module#bound_method(new_method_name, unbound_method) とできてだいぶ単純になっていいんですが... 上記のように, BoundMethodはメソッド評価時には便利ですが, メソッドその ものを取り扱うという点からはUnboundMethodの方が便利だと思うのですが... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---