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