Ich stecke oft vorkonfigurierte Lambdas in aufzählbare Methoden wie 'map', 'select' usw. aber das Verhalten von 'inject' scheint anders zu sein. z.B. mit
mult4 = lambda {|item| item * 4 }
dann
(5..10).map &mult4
gibt mir
[20, 24, 28, 32, 36, 40]
Wenn ich jedoch ein 2-Parameter-Lambda für die Verwendung mit einem Injektionsmittel wie folgt erstelle,
multL = lambda {|product, n| product * n }
Ich möchte in der Lage sein zu sagen
(5..10).inject(2) &multL
da 'inject' eine optionale einzeln Parameter für den Anfangswert, aber das gibt mir ...
irb(main):027:0> (5..10).inject(2) &multL
LocalJumpError: no block given
from (irb):27:in `inject'
from (irb):27
Wenn ich jedoch das '&multL' in eine zweite Parameter zu injizieren, dann funktioniert es.
irb(main):028:0> (5..10).inject(2, &multL)
=> 302400
Meine Frage lautet: "Warum funktioniert das und nicht der vorherige Versuch?"