38

reduce の構文に問題があります。次の形式のハッシュがあります。

H = {"Key1" => 1, "Key2" => 2}

reduce を使用して、この関数の値の合計を見つけたいと思います。

何かのようなもの

H.reduce(0) {|memo, elem| memo+=elem}

私はこれが間違っていることを知っています。elem をハッシュの値にする方法がわかりません。

4

6 に答える 6

2

私はこれを発掘していることを知っていますが、たまたま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が利用可能になったことに注意してください。

于 2016-04-29T21:28:42.160 に答える
1
h = {"Key1" => 1, "Key2" => 2}

h.values.inject(0){|f,v| f += v.to_i }
# => 3

また

h.values.inject(:+)
# => 3
于 2012-12-14T16:56:26.610 に答える