2014-01-08 160 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