Я часто подключаю предварительно сконфигурированные lambdas к перечислимым методам, таким как «map», «select» и т. Д. , но поведение «инъекции» кажется другим. , например. сПонимание поведения инъекции, используемого с лямбдой в Ruby
mult4 = lambda {|item| item * 4 }
затем
(5..10).map &mult4
дает мне
[20, 24, 28, 32, 36, 40]
Однако, если я делаю 2-параметра лямбда для использования с Inject, как это так,
multL = lambda {|product, n| product * n }
Я хочу сказать
(5..10).inject(2) &multL
поскольку «инъекционные» имеет дополнительный единственный параметр для начального значения, , но это дает мне ...
irb(main):027:0> (5..10).inject(2) &multL
LocalJumpError: no block given
from (irb):27:in `inject'
from (irb):27
Однако, если набивать «& multL» в второй параметр для инъекции, затем он работает.
irb(main):028:0> (5..10).inject(2, &multL)
=> 302400
Мой вопрос: «Почему это работает, а не предыдущая попытка?»