1

メソッドを表す関数にシンボルを渡すときにアンパサンドを使用するタイミングを理解するのに苦労しています。たとえば、範囲 1..10 の合計を計算する場合は、次のようにします。

(1..10).inject(:+)

これはもともと、関数で「魔法のように」使用されるメソッドを定義するシンボルを渡したい場合は、関数名をシンボルとして渡すと私に信じさせました。しかし、その後、レールに次のようなものが表示されます。

total = Product.find(product_list).sum(&:price)

私の理解が正しければ、&:price は :price.to_proc の呼び出しと同じです。上記の仕組みがわかりません。

4

1 に答える 1