请参阅以下代码(摘自Learning Ruby一书):
def timer(start)
puts "Minutes: " + start.to_s
start_time = Time.now
puts start_time.strftime("Start time: %I:%M:%S: %p")
start.downto(1) { |i| sleep 60 }
end_time = Time.now
print end_time.strftime("Elapsed time: %I:%M:%S: %p\n")
end
timer 10
为什么需要将start
变量更改为置位线上的字符串?例如,我不能简单地放入puts "Minutes: #{start}"
?
另外,start.downto(1)
行:块{|i| sleep 60}
是否指定每分钟应该有多少秒?
答案 0 :(得分:2)
是的,你也可以说:
puts "Mintues: #{start}"
这是许多不错的Ruby选择之一。 :)在这种情况下,它没有太大的区别。
关于循环:
start.downto(1) { |i| sleep 60 }
是的,这会将分钟计算到1
,每次都在睡60秒。所以它将睡眠start
分钟。如果start
不是太大,您可以使用sleep 60*start
。