Чем Enumerable#reduce отличается от ручной accumulator и когда что выбирать?

Ruby / RailsJuniorBlocks, Proc, Lambda и EnumerableСравнениеblocksproclambda и enumerable|enumerable#reduce|ruby|rails

Что хотят услышать интервьюеры:

Сравнение: «Enumerable#reduce» обычно оценивают в паре с ручной accumulator. Выбор зависит от читаемости, Rails conventions, стоимости поддержки, безопасности, нагрузки и тестируемости.

Ответ:

Когда выбирать Enumerable#reduce: когда его свойства прямо решают задачу, а не просто выглядят привычно.

Плохой ответ: «так принято в Rails» без объяснения последствий.

sum = orders.reduce(0) { |acc, o| acc + o.total }

Источники

Похожие вопросы