reduce の構文に問題があります。次の形式のハッシュがあります。
H = {"Key1" => 1, "Key2" => 2}
reduce を使用して、この関数の値の合計を見つけたいと思います。
何かのようなもの
H.reduce(0) {|memo, elem| memo+=elem}
私はこれが間違っていることを知っています。elem をハッシュの値にする方法がわかりません。
私はこれを発掘していることを知っていますが、たまたまRailsを使用している場合は、この.sum
方法が役立ちます:
H = {"Key1" => 1, "Key2" => 2}
=> {"Key1"=>1, "Key2"=>2}
> H.values.sum
=> 3
利点は、0
空のハッシュで返されることです。
> {}.values.sum
=> 0
> {}.values.reduce(:+)
=> nil
この回答を入力して初めて、Rails固有のものであることに気付きました。OPがRailsタグを追加しなかったことは知っていますが、立ち寄った人にとっては役立つかもしれないと考えました。
Ruby 2.4.0 の時点で、.sum
が利用可能になったことに注意してください。
h = {"Key1" => 1, "Key2" => 2}
h.values.inject(0){|f,v| f += v.to_i }
# => 3
また
h.values.inject(:+)
# => 3