Ruby遍历哈希、在每一步更新值的最常用方法是什么



我想遍历一个简单的散列,显示每个键值对的值,并让用户能够更新该值。至关重要的是,如果用户只是点击回车键而没有提供新值,那么旧值应该会保留下来。这是我的示例代码,它很有效,但似乎不是Ruby惯用语:

mydata = {"key1" => "value1", "key2" => "value2", "key3" => "value3"}
newdata = {}
mydata.each do |k, v|
puts "current value is " + v.to_s
input = gets.chomp
if input.length == 0
newdata[k] = mydata[k]
else
newdata[k] = input
end
end
puts mydata
puts newdata

如果你真的不在乎密钥:

newdata = mydata.transform_values do |value|
puts "Current: #{value.inspect}"
updated = gets.chomp
updated.empty? ? value : updated
end

这就是它的全部。