From: matz@... (Yukihiro Matsumoto) Date: 1998-02-05T13:56:19+09:00 Subject: [ruby-dev:1385] Re: bound method まつもと ゆきひろです In message "[ruby-dev:1384] Re: bound method" on 98/02/05, 石塚圭樹 writes: |けいじゅ@日本ラショナルソフトウェアです. |>いや,それよりなによりunbound_methodという存在そのものを闇に |>葬ろうかと思っているんです.あんまり役に立たない割に手間がか |>かるから.^^;;; | |役に立たないと言うのは気になりますね. bound_methodはレシーバと言うパラ |メータが固定されていますから, 利用価値から言えば unbound_methodの方が |上になると思いますよ. 「あんまり役に立たない」というのは語弊がありますか? unbound_methodの方が自由度が高いというのはもちろん事実なので すが,unboundなメソッドでしか実現できない事というと,クラス 間のメソッドの譲渡などしかないわけで,それが(まあ,実装の都 合もあるんですが),多くの場合危険である事を考えるとやっぱり 「あんまり役に立たない」という気にもなるわけですよね. メソッドの譲渡が意味があるのはインスタンスの構造が同じ(正確 に言うと上位互換であれば良い)クラス間だけですよね.Rubyの場 合は「偶然にも」かなり多くのクラスのインスタンスが同じ構造を 持っているわけですが,それは実装から言ってもたまたまなわけで すから. |obj.each{|e| func(e)} | |見たいなものが, bound_methodを導入すると簡単に記述できるような話が, 最 |近あったと思うのですが, 具体的にどんな感じになるのでしょう? map(ary, obj.bound_method(:foo)) で ary.each{|x|foo(x)} を表現できるという意味ではないでしょうか? # 実際に書くと全然簡単じゃないな まつもと ゆきひろ /:|)