在Ruby中更新特定值
我刚从Ruby开始我的冒险,我有个问题。我已经完成了Codecademy的Ruby课程,所以我不是那么新手,但我仍然不知道太多。无论如何如何使用公式更新特定值?比如,我想用下面的散列来做些什么:在Ruby中更新特定值,ruby,hash,Ruby,Hash,我刚从Ruby开始我的冒险,我有个问题。我已经完成了Codecademy的Ruby课程,所以我不是那么新手,但我仍然不知道太多。无论如何如何使用公式更新特定值?比如,我想用下面的散列来做些什么: hash = { "s1" => 2, "s2" => 3 } 接下来我要做的是,通过gets.chomp获取输入以获取密钥,然后获取要添加到value(也通过gets.chomp)的金额。以下是我尝试过但未成功的方法: name = gets.chomp value = gets.cho
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在一个块内,
x
和y
都是局部变量,更新它们不会产生任何影响。您可以映射
:
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})
在块内,
x
和y
都是局部变量,更新它们不会产生任何影响。您可以映射
:
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})
哈!非常感谢。现在我可以继续了。我把事情搞得太复杂了。必须更仔细地阅读文档。干杯,哈!非常感谢。现在我可以继续了。我把事情搞得太复杂了。必须更仔细地阅读文档。干杯