機械す。
どうも、基礎のトコすっとばして、ディープなトコに関わってるのが、
根本的な問題のような気がしてきました。
※普段『お約束』が極端に少ない言語ばっか使ってるので、ボケのかも
> > .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では、&は省略しても同じ、と。
いや、シンボルを渡せるバージョンなら、&は要らない、のかな。
区切りを明示する括弧のように、何をしているのかはっきりとわかるように
書いている、と。
……大体、大体、だ、大体は、たぶん、おそらく、なんとなくわかってるんだ
と思うんですが。
やっぱ使わない言語は、なかなか勝手がわからないものですね。
ごめんなさい、「とりあえずそういうものだ」と納得しておきます。
もう少し勉強しなおしてから、読み直させていただきます。
/機械伯爵/