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