練習1-1 また間違えてた

このまえの練習問題。

練習1-1 次のように、任意の数の整数データを与えるとその総和を計算するメソッドを書いてください。

sum_all(1, 2, 3, 4, 5)  # => 15.0

結果は Float でないといけないのか!

入力は整数なのに?

整数でない入力もありだとしてやってみると、やっぱり Float に変換してから加算するのか、和を Float に変換するのかで結果が変わる。

Float に変換してから

def sum_all(*arg)
  arg.map{|i|Float i}.inject(&:+)
end

sum_all "1", "2", "3.5", "4", "5" # => 15.5

変換に to_f ではなく Float を使うのは、変換できなかったときに例外を出してもらうため。

"one".to_f      # => 0.0
Float "two"
# ~> -:2:in `Float': invalid value for Float(): "two" (ArgumentError)

和を Float に変換

def sum_all(*arg)
  Float arg.inject(&:+)
end

sum_all "1", "2", "3.5", "4", "5" # => 123.545

ネタでした。ごめんなさい。ごめんなさい。