質問: sum=0 aaa={"クラス会費"=>3000, "二次会費"=>2000, "その他"=>1000} aaa.each do |i| sum+=i[1] end puts "合計 : #{sum}" 4行目のsum+=i[1]の[]内についてです 数字が1のときのみ正しく帰ってくるのですが、2や3、0のときにはエラーが出ます。 この場合は1でないといけないのでしょうか? 1以外の数字が使えない理由を教えてください。 よろしくお願いします!
回答: Hash#eachが ``` each {|key, value| ... } -> self ``` だからです。 ブロックパラメータの挙動により 多重代入に似た挙動になるので ブロックパラメータをひとつのみ指定すると ``` aaa={"クラス会費"=>3000, "二次会費"=>2000, "その他"=>1000} aaa.each do |key, value| i = [key, value] sum+=i[1] end ``` となるので、`i[1]`で値がとれます