我刚刚开始使用Ruby进行冒险,我遇到了问题。我已经完成了Codecademy的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
答案 0 :(得分:2)
在块中,x
和y
都是局部变量,更新它们不起作用。您可以改为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
使用更新:
hash.update({name => value})