无法在我的连续输入程序(Ruby)中正确迭代哈希

无法在我的连续输入程序(Ruby)中正确迭代哈希,ruby,hash,iteration,Ruby,Hash,Iteration,我正在尝试看看是否可以在我试图创建的程序中创建一个包含散列的用户输入请求列表。最好的办法是什么 print "would you like to begin a changeover? (y/n) " input = gets.chomp tracking = { "start time" => input.Time.now, "Type?" => input, "shift?" => input, "standard hrs?" => input,

我正在尝试看看是否可以在我试图创建的程序中创建一个包含散列的用户输入请求列表。最好的办法是什么

print "would you like to begin a changeover? (y/n) "
input = gets.chomp

tracking = {
  "start time" => input.Time.now,
  "Type?" => input,
  "shift?" => input,
  "standard hrs?" => input,
  "actual hrs?" => input,
  "end time" => input = gets.chomp.Time.now
}

tracking.each do |key, value|
  puts "great please answer the following: #{tracking}"
end

提前谢谢

您必须记住,除非您正在定义函数/方法,否则评估是顺序的,从上到下进行。在代码中:

您向用户询问有关转换的问题 您可以将用户输入,比如说,y输入到变量输入中 创建一个散列,包含六个值;其中四个将包含y,其中两个将包含当前时间 您对散列进行迭代,打印其值,不向用户询问任何内容。 或者至少如果gets.chomp.Time.now不是一个错误的话

因此,要注意时机:

print "would you like to begin a changeover? (y/n) "
unless gets.chomp.tolower == 'n'
  puts "great please answer the following:"

  tracking = {
    "start time" => Time.now
  }

  [
    "Type?",
    "shift?",
    "standard hrs?",
    "actual hrs?"
  ].each do |question|
    print question
    tracking[question] = gets.chomp
  }

  tracking["end_time"] = Time.now
end

非常感谢!这使我走上了正确的道路。然而,在问卷的开头和结尾加盖时间戳并不是我想要的方式。然而,在我自己玩了一点代码之后,我能够让它工作

print "would you like to begin a changeover? (y/n) "
unless gets.chomp. == "n"
    puts Time.now
请回答以下问题:

结束

更改完成时请输入“完成” input=gets.chomp
花时间。现在不知道你想做什么。你能更详细地描述一下吗?你想向用户询问六个不同的问题,然后将答案放入哈希表中吗?嗨,Amadan,谢谢你的回答。我对Ruby比较陌生,希望尝试从用户那里获得输入,以回答哈希表中的问题。我希望问卷的开始和结束标记流程的开始和结束时间/日期。这可能吗?还是我应该尝试另一种方法?我觉得这样可以节省很多时间和代码。任何提示都会有帮助。谢谢非常感谢!这让我走上了正确的轨道,但这并不是我所希望的时间标记过程的开始和结束,但在玩了一点之后,我能够得到我想要的结果。代码最终是这样的:
    questionnaire = ["Type", "Shift?", "Standard hrs?", "Actual hrs?"]
    .each do |question|
        puts question
        questionnaire = gets.chomp

end