在ruby中条件失败时保存程序状态

时间:2015-07-28 14:41:14

标签: ruby

我有一个嵌套的哈希,我从中提取了密钥。此键显示给用户以选择输入现在用户输入输入并根据该输入,它从散列中找到该键并检查该键是否存在于散列中,如果它存在于散列中而不是程序继续,否则它给出消息无效选项,然后再次显示上一条消息以选择输入。

哈希:

@metals = { 
"1" => {Aluminium:  100}, 
"2" => {Steel: 80}, 
"3" => {Copper: 60}
}

我的代码:

def getmetal
    puts "Which metal do you want to use?"
    @metals.each do |key1, value1|
       value1.each do |key2, value2|
        puts "Enter #{key1} for #{key2}"
      end
    end
    @metalsdata = gets.chomp
    if @metals.has_key?(@metalsdata)
        @metalname, @metalprice = @metals[@metalsdata].first
    else
        puts "Invalid option"
    end 
end

我已经做了很多这个部分我想要做的是如果用户输入错误的选项而不是显示“请选择有效输入”的错误消息,然后再次请求输入。 建议我如何实现它?

1 个答案:

答案 0 :(得分:1)

while !@metals.has_key?(@metalsdata = gets.chomp) do
  puts 'Please enter correct value'
end
@metalname, @metalprice = @metals[@metalsdata].first