1

Rubyでハッシュ値を合計する最良の方法は何ですか:

@price = { :price1 => "100", :price2 => "100", :price3 => "50" }

私は今このようなことをしています:

@pricepackage = @price[:price1] + @price[:price2] + @price[:price3] + 500

答えを説明してください。方法だけでなく、理由も知りたいです。=)

4

3 に答える 3

7

できるよ:

@price.values.map(&:to_i).inject(0, &:+)

編集:説明を追加

したがって、@price.values は、ハッシュのすべての値を収集する配列を返します。それは例えば["1", "12", "4"]です。次に、この配列の各要素に.map(&:to_i)適用されるため、 が得られます。最後に、初期値 0 で inject をプリフォームし、関数 を使用して累積するため、最後のステップで配列のすべての要素を合計します。to_i[1,12,4].inject(0,&:+)+

于 2013-01-30T17:10:43.310 に答える
2

データセットが次のようになっている場合:

prices = {price1: 100, price2: 100, price3: 50}

次に、これは値を合計します:

prices.values.inject(0) {|total, v| total += v}
于 2013-01-30T17:13:37.963 に答える
1

複雑にしないでおく

@prices = ....
@price = 0.0

@prices.each do |p|
   @price += p
end
于 2013-01-30T17:14:24.650 に答える