作者: 機械伯爵
日時: 2009/5/16(21:59)
 機械す。

 どうも、基礎のトコすっとばして、ディープなトコに関わってるのが、
根本的な問題のような気がしてきました。

※普段『お約束』が極端に少ない言語ばっか使ってるので、ボケのかも

> >  .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)」と等価である。

 つまるところ、新しいバージョンのRubyでは、&は省略しても同じ、と。
 いや、シンボルを渡せるバージョンなら、&は要らない、のかな。
 区切りを明示する括弧のように、何をしているのかはっきりとわかるように
書いている、と。

 ……大体、大体、だ、大体は、たぶん、おそらく、なんとなくわかってるんだ
と思うんですが。
 やっぱ使わない言語は、なかなか勝手がわからないものですね。

 ごめんなさい、「とりあえずそういうものだ」と納得しておきます。
 もう少し勉強しなおしてから、読み直させていただきます。

 /機械伯爵/