Ruby way: поймать деление на ноль

У меня есть следующий метод вычисления среднего:

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

Есть предложения?

19
задан Andrew 3 April 2011 в 17:10
поделиться