Я нахожу этот код в Ruby довольно интригующим
(1..4).inject(&:+)
Хорошо, я знаю, что делает inject
, и я знаю, что этот код в основном эквивалентен
(1..4).inject(0) {|a,n| a + n}
, но как именно это работает?
Почему &: +
совпадает с записью блока {| a, n | a + n}
?
Почему не требуется начальное значение? Я' m в порядке с начальным значением 0, но (1..4) .inject (&: *)
также работает, и там начальное значение должно быть 1 ...