2016-09-18 6 views
0

Rubyで冒険を始めるところですが、問題があります。私はCodecademyのRubyコースを修了したので、私はそれが緑ではありませんが、私はまだあまり分かりません。とにかく。方程式で特定の値を更新するにはどうすればよいですか?同様に、ここで私は、次のハッシュでやろうとしているものです:Rubyで特定の値を更新する

hash = { "s1" => 2, "s2" => 3 } 

私は次何をしたいのか、キーを取得するにはgets.chompを介して入力を取得し、その後、valueに追加する量を取得されます( gets.chompによっても)。ここで私は失敗した試みているものです:

name = gets.chomp 
value = gets.chomp.to_i 
hash.each do |x, y| 
    if x == name 
    y == y + value 
    else 
    puts "nope" 
    end 
end 

私もHash#updateでなく、運をいじり試してみました。 誰も助けてもらえますか?私はすでに3時間などのためにそれに引っかかってきた:/

乾杯、 Boberczus

答えて

2

をブロックの中で、xy両方は何の効果も行いませんそれらを更新し、ローカル変数です。

hash.map do |x, y| 
    [x, if x == name 
     y + value 
     else 
     puts "nope" 
     y 
     end 
    ] 
end.to_h 

をしかし、最も簡単な方法は、次のようになります:あなたは代わりにmapかもしれない

if hash[name] 
    hash[name] += value 
else 
    puts "nope" 
end 

アップデートを使用する:

hash.update({name => value}) 
+0

ほらを!ありがとうございました!今私は上に移動することができます。私は物事を完全にオーバーコンプリートしていた。ドキュメントをもっと慎重に読まなければならない。乾杯。 – boberczus

関連する問題