2016-09-18 23 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是局部變量,更新他們是沒有影響。您可能會改爲map

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

但最簡單的方法是:

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

使用update:

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

哈!謝謝!現在我可以繼續前進。我完全是過分複雜的事情。仔細閱讀文檔。乾杯。 – boberczus