作者: rubikitch | |
日時: 2009/5/16(20:17) |
From: kikwai@... (機械伯爵) Subject: [TSruby:325] Re: inject メソッド Date: Sat, 16 May 2009 19:03:24 +0900 (JST) > .inject(:*)が、.inject(&:*)になってるのは、なぜでしょーねぇ? injectにシンボルを渡すと &シンボル と同じ効果になる。 で、 &シンボルは Symbol#to_proc により {|x,y| x.__send__(sym, y) } (簡略化あり: xのsymメソッドを引数yをつけて呼ぶ)となる。 .inject(&:*) === .inject{|x,y| x*y} x*y は「*」というメソッド呼び出しなので 「x.__send__(:*, y)」と等価である。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/