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

Tom*_*hes 1 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
Run Code Online (Sandbox Code Playgroud)

tad*_*man 5

如果您真的不在乎按键:

newdata = mydata.transform_values do |value|
   puts "Current: #{value.inspect}"
   updated = gets.chomp
   updated.empty? ? value : updated
end
Run Code Online (Sandbox Code Playgroud)

这里的所有都是它的。