[#950] ruby 1.1b0 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

33 messages 1997/12/05

[#998] ruby 1.1b1 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

48 messages 1997/12/09
[#1011] Re: ruby 1.1b1 released — Kazuhisa Yanagawa <katze@...> 1997/12/10

in message-id: <199712090833.RAA31727@picachu.netlab.co.jp>

[#1013] Re: ruby 1.1b1 released — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1028] Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/10

原です。

[#1030] Re: Regexp#operators (Re: ruby 1.1b1 released) — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1033] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/10

原です。

[#1049] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/11

原です。

[#1064] Re: Regexp#operators (Re: ruby 1.1b1 released) — matz@... (Yukihiro Matsumoto) 1997/12/12

まつもと ゆきひろです

[#1097] Re: Regexp#operators (Re: ruby 1.1b1 released) — Shin-ichiro HARA <sinara@...> 1997/12/15

原です。

[#1002] Object#bind — shugo@... (Shugo Maeda)

前田です。

39 messages 1997/12/09
[#1008] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1023] Re: Object#bind — shugo@... (Shugo Maeda) 1997/12/10

前田です。

[#1026] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/10

まつもと ゆきひろです

[#1044] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/11

けいじゅ@日本ラショナルソフトウェアです.

[#1051] Re: Object#bind — shugo@... (Shugo Maeda) 1997/12/11

前田です。

[#1063] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/12

まつもと ゆきひろです

[#1079] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/14

けいじゅ@日本ラショナルソフトウェアです.

[#1084] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/15

まつもと ゆきひろです

[#1087] Re: Object#bind — keiju@... (石塚圭樹 ) 1997/12/15

けいじゅ@日本ラショナルソフトウェアです.

[#1088] Re: Object#bind — matz@... (Yukihiro Matsumoto) 1997/12/15

まつもと ゆきひろです

[#1085] [Req] object refference — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

12 messages 1997/12/15

[ruby-dev:1136] Re: Object#bind

From: matz@... (Yukihiro Matsumoto)
Date: 1997-12-18 05:35:55 UTC
List: ruby-dev #1136
まつもと ゆきひろです

In message "[ruby-dev:1134] Re: Object#bind"
    on 97/12/18, 石塚圭樹 <keiju@rational.com> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|  Object#bound_method(method_name)
|
|なんですね? すでにobject(のクラス)に登録してあるメソッドをobjectをレシー
|バとしてbindしたメソッドなんですね. で, 実行したい時には,
|
|  bound_method.call(arg,...)
|
|と...
|
|でも, これだとレシーバが固定になってしまいますね.

そうです.レシーバに束縛されているんでBoundMethodなんですね.
石塚さんはモジュールに束縛されていると思ってたんですね.

|  Module#bodoud_method(method_name)
|
|って感じのBoundMethodもありますね. この場合はそのModuleに登録されたて
|いるっていう意味で束縛されています. この場合は, そのModuleの子孫クラス
|のインスタンスから呼びだし可能で, 次のように使えます.
|
|  a_obj.send(bound_method, arg,...)
|
|後者の方が, 色々と応用例がありますね. 

これは私の話していたUnboundMethodに近いです.モジュールに束
縛されているということは上の例では a_obj は module に対して
kind_of?が成立することを仮定しています?

|# たしか, この話しの元になったのが
|#
|#   (fset 'old-func (symbol-funcation 'method)
|#   (defun method ...)
|#
|# をrubyでも行ないたいって話しでしたので...

とはいえ,もともとの前田さんのBoundMethodの実装が今私の話し
ているようなBoundMethodでしたからねえ.

|  Module#bound(method_name, bound_method)
|
|これは, bound_methodの束縛しているクラスの子孫クラスにmethod_nameとし
|て登録するメソッドです. そうすると,
|
|  foo = Foo.bound_method(:foo)
|  Foo.remove_method(:foo)
|  Foo.bount_method(:foo_org, foo)
|  Foo.eval_module "def foo; ... foo_org ... ; end"
|
|なんてこともできるようになります. 
|
|いかがでしょう?

クラスツリーを越えられないのではaliasと変わらない気がします
が…,どうなんでしょ?

|うーん. 確かにsuperの問題は微妙ですね... 実際にメソッドが定義されてい
|たクラスからたどっていけば良いような気もしますが, そうすれば良いとも限
|らないですからねえ...

問題なのはmix-inの関係でrubyは実装上は多重継承になっているの
でsuperで呼ばれるメソッドが静的には決して決まらないことです.
で,現在はレシーバのクラス階層から動的に探しているのですが,
UnboundMethodによってメソッドが要求するクラス階層とレシーバ
のクラス階層が異なると破綻しそうです.すくなくとも現在の実装
では対応できません.

|先ほどのBoundMethodの後者の件でも, 子孫クラスでOKとしましたが, そのク
|ラスに限るべきなんですかねえ...

だから,それじゃ alias ですって.

                                まつもと ゆきひろ /:|)

In This Thread