合計値の取得方法がいまいち整理できていなかったので、わかっている範囲で整理します。
想定読者
- Ruby初心者
配列の合計値の取得方法まとめ
合計値を取得する方法には下記のようなものがあります。
- sumメソッド
- injectメソッド
- forループ
- eachループ
ではそれぞれの使い方を整理します。
sumメソッド
sumメソッドは配列内の値を合計してくれます。
array = [1,2,3,4,5,6,7,8,9,10]
total = array.sum
puts total #=>55
こんな感じですね。もし、配列内の文字列の値を、数値で合計したい場合は要素を加工するようにしましょう。
array = ["1","2","3","4","5","6","7","8","9","10"]
total = array.sum{|array| array.to_i}
puts total #=>55
injectメソッド
injectメソッドもsumメソッドと同じように呼び出した配列の合計値を計算してくれます。配列からinjectメソッドを呼び出し、:+を引数に加えます。
array = [1,2,3,4,5,6,7,8,9,10]
total = array.inject(:+)
puts total #=>55
ループを使った方法【for/each】
for・eachループを使って合計を求める方法もあります。ループで合計を求めるためには、まず配列の合計値を格納するための変数を用意します。
sum = 0
この変数の中に格納していきます。
それでは、ループ処理を用いて合計値を求めていきましょう。
for構文
for構文は配列から順に要素を取り出し、決められた処理を繰り返し行います。
今回は要素を取り出して合計します。for構文の公式は以下の通りです。
#for構文
for 仮変数 in 配列
処理したいコード
end
配列の要素が仮変数に格納され、その変数を元にコードが処理されます。
合計値を求める場合は以下のようになります。
array = [1,2,3,4,5,6,7,8,9,10]
sum = 0 #合計値を格納するための変数
for i in array
sum += i
end
puts sum #=>55
配列arrayの要素が仮変数iに代入され、sumの値に加算されます。
+=は加算を表しており、sum = sum + iです。
配列の要素がなくなるまで処理が行われ、要素がなくなったらループを抜け、putsで出力されます。
each構文
続いてはeach構文です。each構文もfor構文と同じように、指定された配列の要素を取り出して、繰り返し処理を行います。公式は以下の通りです。
#each構文
配列.each do |変数|
処理したいコード
end
配列の要素が変数に格納され、繰り返し処理が行われます。
合計を求める場合は以下のようになります。
array = [1,2,3,4,5,6,7,8,9,10]
sum = 0 #合計値を格納するための変数
array.each do |arr|
sum += arr
end
puts sum #=>55
配列arrayの値が変数arrに格納され、sumの値に加算されます。
sum += arrは、sum = sum + arrです。
こちらも配列の要素がなくなるまで処理が行われ、要素がなくなったらループを抜け、putsで出力されます。
まとめ
配列の値を合計する方法は以下の4つです。
- sumメソッド
- injectメソッド
- forループ
- eachループ
ループを使う場合は、合計値を格納するための変数の定義を忘れずにしておきましょう。
参考サイト・資料