Verstehen des Verhaltens von Injects, die mit einem Lambda in Ruby verwendet werden

Ich stecke oft vorkonfigurierte Lambdas in unzählige Methoden wie 'map', 'select' usw., aber das Verhalten von 'inject' scheint anders zu sein. z.B. mit

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

dann

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

gibt mir

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

Wenn ich jedoch ein 2-Parameter-Lambda für die Verwendung mit einem Inject wie folgt erstelle,

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

Ich möchte sagen können

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

da hat 'spritzen' eine optionSingle Parameter für den Anfangswert, aber das gibt mir ...

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

Allerdings, wenn ich das '& multL' in ein stopfezweite parameter einspritzen, dann klappt es.

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

Meine Frage lautet: "Warum funktioniert das und nicht der vorherige Versuch?"

Antworten auf die Frage(1)

Ihre Antwort auf die Frage