Entendendo o comportamento de injetar usado com um lambda em Ruby
Eu costumo ligar lambdas pré-configurados em métodos enumeráveis como 'map', 'select' etc. mas o comportamento de 'inject' parece ser diferente. por exemplo. com
<code>mult4 = lambda {|item| item * 4 } </code>
então
<code>(5..10).map &mult4 </code>
me dá
<code>[20, 24, 28, 32, 36, 40] </code>
No entanto, se eu fizer um lambda de 2 parâmetros para uso com uma injeção assim,
<code>multL = lambda {|product, n| product * n } </code>
Eu quero poder dizer
<code>(5..10).inject(2) &multL </code>
já que 'injetar' tem um opcionalsolteiro parâmetro para o valor inicial, mas isso me dá ...
<code>irb(main):027:0> (5..10).inject(2) &multL LocalJumpError: no block given from (irb):27:in `inject' from (irb):27 </code>
No entanto, se eu encher o '& multL' em umsegundo parâmetro para injetar, então funciona.
<code>irb(main):028:0> (5..10).inject(2, &multL) => 302400 </code>
Minha pergunta é "por que isso funciona e não a tentativa anterior?"