私はよく、事前構成されたラムダを「map」、「select」などの列挙可能なメソッドにプラグインしますが、「inject」の動作は異なるようです。例えば
mult4 = lambda {|item| item * 4 }
それから
(5..10).map &mult4
私にくれます
[20, 24, 28, 32, 36, 40]
ただし、そのように注入で使用する2パラメーターラムダを作成すると、
multL = lambda {|product, n| product * n }
言えるようになりたい
(5..10).inject(2) &multL
「注入」には初期値のオプションの単一パラメーターがあるため、それは私に...
irb(main):027:0> (5..10).inject(2) &multL
LocalJumpError: no block given
from (irb):27:in `inject'
from (irb):27
ただし、「&multL」を2 番目のパラメーターに挿入して挿入すると、機能します。
irb(main):028:0> (5..10).inject(2, &multL)
=> 302400
私の質問は、「以前の試みではなく、なぜそれが機能するのですか?」です。