hello-world
webエンジニアのメモ。とりあえずやってみる。

[ruby]injectを使って配列の合計値を求める

公開日時

rubyで配列の合計値を求める際にinjectを使うと便利だったのでメモ 以下のようなHashがあった場合に、値の合計値を求めたくなりました。

targets = {
 a: 10,
 b: 40,
 c: 50,
}

まずシンプルに以下のような形を思いつきます。

# sample1
sum1 = 0
targets.values.each do |val|
  sum1 = sum1 +  val
end
p sum1 #=> 100

これでとりあえずは合計が出ます。

ですがEnumerableクラスのinjectメソッドを使うともっと手軽に書くことができます。

# sample2
sum2 = targets.values.inject(0) { |sum, i| sum + i }
p sum2 #=> 100

inject(0)の0がsample1でいうsum1=0の部分に該当します。

sum + iの部分は同じですね。

これをさらに短く書くと以下のようにも書けるそうです。

# sample3
sum3 = targets.values.inject(:+)
p sum3

というわけで配列の合計値を求める場合はarray.inject(:+)の形式を使っていこうと思いました。

参考


Related #Ruby

AWS SAMを使って署名付きURL発行APIを作る

S3の署名付きURL発行機能の検証を兼ねて、S3のキーをパラメータとして受け取り、署名付きURLを発行するAPIを作ってみました。

Rails Application Templateを使ってみた

やろうやろうと先延ばしにしていたRails Application Templateを使ってみました。

bundle install 時に An error occured while installing json (1.7.7)

mac で bundle install を実行した際に下記エラーが発生