2014-01-08 163 views
0

请参见下面的代码(从学习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

只有当您希望以“开始时间:...”等格式查看时间时,或者您希望使用特定的日期/时间格式时才需要。 – lurker

+0

我怀疑你的意思是'定时器(开始)'。回复不需要,因为我将删除此评论。 –

+0

这里是[Kernel#sleep](http://ruby-doc.org/core-2.1.0/Kernel.html#method-i-sleep)的文档。请注意'{| i | sleep 60}'可以写成'{sleep 60}',因为没有使用迭代器变量'i'。 –

回答

2

是的,你也可以说:

puts "Mintues: #{start}" 

它的许多不错的红宝石的选择之一。 :)在这种情况下,它没有太大的区别。

关于循环:

start.downto(1) { |i| sleep 60 } 

没错,这就是计数分钟下降到1,每次在睡觉60秒。所以它会睡start分钟。如果start不是太大,您可以使用sleep 60*start