在Ruby中更新特定值

时间:2016-09-18 11:59:47

标签: ruby hash

我刚刚开始使用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

1 个答案:

答案 0 :(得分: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

使用更新:

hash.update({name => value})