From: MAEDA Shugo Date: 1998-06-30T00:06:02+09:00 Subject: [ruby-list:8591] Re: proc -> iterator block (Re: hash sort) 前田です。 Kazuhiro HIWADA wrote: >shugo> のようにメソッドオブジェクトをイテレータブロックとして渡す事 も >shugo> できます。 > >メソッドが切り放せてしまうんですね。これはちょっと気持悪い。 ちょっと意味が分かりませんでした。 オブジェクトとメソッドが切り離される、ということなら、それは誤解だ と思います。 obj.method(:method_name) というのはレシーバが束縛されたメソッドオブジェクトを返すので、切り 離されると言うよりは、むしろ結合されるといった感じです。 >shugo> >[h,o,g,e].sort(:some_comparison_method_name) > >これはこういう意味のつもりでした。 >class Array > def mysort(id = :<=>) ; self.sort{|a,b| a.method(id).call(b)} end >end この場合、メソッドをオブジェクト化するのはもったいないので、 def mysort(id = :<=>) ; self.sort{|a,b| a.send(id, b)} とした方が良いと思います。