У меня есть следующий способ вычисления среднего значения:
def compute_average(a,b,c,d,e)
total = [a,b,c,d,e].sum.to_f
average = [a, 2*b, 3*c, 4*d, 5*e].sum / total
average.round(2)
end
Это ничего особенного, но у меня есть проблема, которую я ожидаю от всех средних уравнений: она может делиться на ноль, если входы все равны нулю.
Итак, я подумал об этом:
def compute_average(a,b,c,d,e)
total = [a,b,c,d,e].sum.to_f
if total==0
average = 0.00
else
average = [a, 2*b, 3*c, 4*d, 5*e].sum / total
average.round(2)
end
end
... и это работает, но для меня это чувствует. Есть ли более элегантный "Ruby Way", чтобы избежать этого деления по нулевой проблеме?
Я хочу, чтобы у меня был оператор "если только", например...
average = numerator / denominator unless denominator == 0 then 0
Любые предложения?