Это не типичное применение метода inject
(reduce
). Идея в том, чтобы использовать его, пока вы уменьшаете массив до единого значения. Использование inject
поверх других итераторов позволяет вам не определять локальную переменную явно (что хорошо, если у вас есть функциональный подход). Что вам действительно нужно, так это сочетание map
и inject
- использование массива значений, переданных в аккумулятор, на мой взгляд, подвох;)
Поскольку не существует специального метода для таких действий, я бы придерживался map
(или map!
):
accumulator = 0
ary.map! {|el| [el.created_at, accumulator += el.usd_conv]}
Нижняя сторона загромождает область более высокого уровня аккумулятором.
Версия, использующая map
, кажется, в 2-3 раза быстрее, когда тестируется (map
против map!
версия).