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