すでにるびきちさんが書かれてますが
機械伯爵 さんは書きました:
> う〜、見たら見たで疑問がぁ〜っ!
>
>> Enumerable#inject の詳細と結合法則 - 今日調べたことまとめ
>> http://d.hatena.ne.jp/tks_period/20081207/p1
>>
>> が、参考になるかも。
>
> .inject(:*)が、.inject(&:*)になってるのは、なぜでしょーねぇ?
リンク先にこうあるのですけどどういう疑問なんでしょうか?
| そして、Ruby 1.9系 と 1.8.7 では &Symbol 形式(や Symbol を直接)を渡
して楽できる様になりました。
|
| p (1..5).inject(&:+)
| # =| 15
|
| p (1..5).inject(:+)
| # =| 15
|
| 後者の様に Symbol を渡せるのは、引数が Symbol の場合、inject が内部で
to_proc してるからです。
| Enumerable#map などでは使えません。
:*をわたしても自動的に &:* と同じになるように変換されるからです。
そして、この&の意味は
FAQ::変数、定数、引数 - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/FAQ_CAD1BFF4A1A2C4EABFF4A1A2B0FABFF4.html#a2.2e9.20.26.a4.ac.a4.c4.a4.a4.a4.bf.b0.fa.bf.f4.a4.cf.b2.bf.a4.c7.a4.b9.a4.ab
|2.9 &がついた引数は何ですか
|
|手続きオブジェクトをブロックとして受け渡しするための引数です。
ということで誤解を恐れずに他の言語でたとえると、Perlで
func \&foo
とやるようなものです。
#ここ数年ひいきにしてたとある店が突然閉店してて悲しい
--
木村浩一/KIMURA Koichi
I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
shoud I?
mail kbk at kt.rim.or.jp
web www.kt.rim.or.jp/~kbk/zakkicho/index.html