Często podłączam wstępnie skonfigurowane lambdy do różnych metod, takich jak 'map', 'select' itp. , ale zachowanie 'inject' wydaje się być inne. np. zOpis działania wtryskiwacza używanego z lambda w Ruby
mult4 = lambda {|item| item * 4 }
następnie
(5..10).map &mult4
daje mi
[20, 24, 28, 32, 36, 40]
Jednakże, jeśli zrobię lambda 2-parametrów do stosowania z inject jak tak,
multL = lambda {|product, n| product * n }
Chcę móc powiedzieć:
(5..10).inject(2) &multL
ponieważ „wstrzykują” ma opcjonalny pojedynczy parametr do wartości początkowej, ale to daje mi ...
irb(main):027:0> (5..10).inject(2) &multL
LocalJumpError: no block given
from (irb):27:in `inject'
from (irb):27
Jednak gdybym nadziać „& multL” do drugi parametr do wstrzyknięcia, a następnie działa.
irb(main):028:0> (5..10).inject(2, &multL)
=> 302400
Moje pytanie brzmi "dlaczego to działa, a nie poprzednia próba?"