Zrozumienie zachowania wtrysku używanego z lambdą w Ruby

Często podłączam wstępnie skonfigurowane lambdy do wyliczalnych metod, takich jak „map”, „select” itd., Ale zachowanie „inject” wydaje się być inne. na przykład z

<code>mult4 = lambda {|item| item * 4 }
</code>

następnie

<code>(5..10).map &mult4
</code>

daje mi

<code>[20, 24, 28, 32, 36, 40]
</code>

Jednakże, jeśli zrobię 2-parametrową lambdę do użytku z takim wstrzykiwaniem,

<code>multL = lambda {|product, n| product * n }
</code>

Chcę móc powiedzieć

<code>(5..10).inject(2) &multL
</code>

ponieważ „inject” ma opcjonalnepojedynczy parametr dla wartości początkowej, ale to daje mi ...

<code>irb(main):027:0> (5..10).inject(2) &multL
LocalJumpError: no block given
        from (irb):27:in `inject'
        from (irb):27
</code>

Jeśli jednak wrzucę '& multL' dodruga parametr do wstrzyknięcia, to działa.

<code>irb(main):028:0> (5..10).inject(2, &multL)
=> 302400
</code>

Moje pytanie brzmi „dlaczego to działa, a nie poprzednia próba?”

questionAnswers(1)

yourAnswerToTheQuestion