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

时间:2015-04-03 05:20:38

标签: 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,
  "actual hrs?" => input,
  "end time" => input = gets.chomp.Time.now
}

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

提前感谢!

2 个答案:

答案 0 :(得分:0)

你必须记住评估是顺序的,从上到下(除非你定义函数/方法)。在您的代码中:

  • 您询问用户有关转换的信息
  • 您可以在变量y
  • 中获得用户输入(例如input
  • 你做了六个值的哈希值;其中四个将包含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

答案 1 :(得分:0)

非常感谢!这让我走上正轨。但是,没有按照我想要的方式给问卷的开头和结尾加上时间戳。然而,在我自己玩了一些代码后,我能够使它工作。

print "would you like to begin a changeover? (y/n) "
unless gets.chomp. == "n"
    puts Time.now

把“很好,请回答以下问题:”

    questionnaire = ["Type", "Shift?", "Standard hrs?", "Actual hrs?"]
    .each do |question|
        puts question
        questionnaire = gets.chomp

end

将“完成更改后请输入'完成'”             input = gets.chomp             放下Time.now