練習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
ネタでした。ごめんなさい。ごめんなさい。