From: matz@... (Yukihiro Matsumoto) Date: 1997-12-15T12:32:17+09:00 Subject: [ruby-dev:1088] Re: Object#bind まつもと ゆきひろです In message "[ruby-dev:1087] Re: Object#bind" on 97/12/15, 石塚圭樹 writes: |根本的に意識のずれがあるですかね? | |私は次のように考えていました. | |* BoundMethod -- クラスまたはオブジェクトに属するメソッド本体(とレシー | バの組) |* UnboundMethod -- クラスやオブジェクトから独立なメソッド本体 いや,ここまでは一致しているのですが. |>|* Module#bound_instance_method(method_name) |>| (インスタンス)メソッドmethod_nameを持つBoundMethodを取り出す. |>この場合boundするべきレシーバが指定されてないです. | |Mod.bound_instance_method(:foo) | |とすると, Mod#fooがModに束縛されたまま取り出される. ってイメージです. 「Mod#fooがModに束縛されている」状態ってどういうものなんでしょ う? インスタンスがあってはじめて束縛できるのではないでしょ うか. |>|* Object#unbound_method(method_name) |>| レシーバのメソッドmethod_nameを持つUnboundMethodを取り出す. |> |>Objectからunbound_methodとりだすのはあんまり好きでないです. |>同じことは object.type.unbound_method でできるし. | |特異メソッドのことを考えたのですが? MOP関係は特異メソッドについて class <|* UnboundMethod#bind(obj) |>| objのメソッドとしてBoundMethodを取り出す. |> |>これ採用したくないですねえ.無名メソッドという恐ろしいものを |>導入したことになるし. | |ん? ん? BoundMethod/UnboundMethodって無名メソッドだと思っていたのです |が?? ちゃいます.「メソッドの本体(どこかに束縛されている/いたこと がある)」と「無名のメソッド(どこにも束縛されていない)」は天 と地ほど違います. # UnboundMethodには乗り気でない まつもと ゆきひろ /:|)