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?"