Я думаю, что метод Ruby inject
действительно удобен для расчета сумм. Но если мне нужно вычислить среднее значение и использовать inject
, я всегда получаю что-то вроде этого:
total_ranked_query_results = @results.count { |result| result.class == RankedQueryResult }
@results.inject(0.0) { |sum, result| result.class == RankedResult ? sum + result.average_precision : sum } / total_ranked_query_results
Таким образом, я в основном должен выполнить итерацию дважды, чтобы узнать, сколько RankedResults
существует, чтобы вычислить среднее.
Есть ли лучший (рубиновый) способ избежать этого?