我解決了TestFirst.org問題09_timer的Ruby Rspec測試。我的代碼有效,但我不喜歡它。這是非常長的。任何意見和/或建議,以改善它將不勝感激。請包括解釋以澄清任何建議。目標是創建帶有@seconds實例變量並初始化爲0的Timer,然後以小時,分鐘,秒格式返回所有值作爲字符串:00:00:00。所以12秒=> 00:00:12; 66秒=> 00:01:06;和4000秒=> 01:06:40。 謝謝。下面的代碼。紅寶石Rspec定時器 - 重構解決方案
class Timer
attr_accessor :seconds
def initialize
@seconds = 0
end
def padded(n)
"0#{n}"
end
def time_string
hours = @seconds/3600
h_minutes = ((@seconds%3600)/60)
minutes = @seconds/60
m_seconds = @seconds%60
second = @seconds
seconds = ""
if @seconds < 60
if second < 10
second = padded(second)
end
seconds << "00:00:#{second}"
elsif @seconds > 3600
if hours < 10
hours = padded(hours)
end
if h_minutes < 10
h_minutes = padded(h_minutes)
end
if m_seconds < 10
m_seconds = padded(m_seconds)
end
seconds << "#{hours}:#{h_minutes}:#{m_seconds}"
else
if minutes < 10
minutes = padded(minutes)
end
if m_seconds < 10
m_seconds = padded(m_seconds)
end
seconds << "00:#{minutes}:#{m_seconds}"
end
@seconds = seconds
end
end
非常感謝扎克。你可能在一個簡單的解決方案中提前幾個星期我的理解。我最大的擔憂之一是經常重複使用簡單的#rjust方法進行單一檢查。我從來沒有考慮過這個。而且我從來沒有以這種方式使用#map,但感謝你,我現在知道了Symbol#to_proc方法。大拇指向上。 – CoderZen
好聽,jere.mac。 'rjust'是標準庫中很少出現的那些事情之一,但很好知道什麼時候需要它。當你越來越熟悉這門語言時,你會發現很多類似的東西。 –