Какой самый идиоматичный способ Ruby пройти через хеш, обновляя значения на каждом шаге? - PullRequest
1 голос
/ 01 ноября 2019

Я хочу пройти через простой хэш, показывая значение для каждой пары ключ-значение, и дать пользователю возможность обновить это значение. Важно отметить, что если пользователь просто нажимает ввод и не предоставляет новое значение, старое значение должно сохраниться. Вот мой пример кода, который работает, но не выглядит особенно Ruby-idiomatic:

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

1 Ответ

5 голосов
/ 01 ноября 2019

Если вы действительно не заботитесь о ключах:

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

Это все, что нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...