Saya memecahkan pertanyaan TestFirst.org 09_timer untuk pengujian Ruby Rspec. Kode saya berfungsi tetapi saya tidak menyukainya. Ini sangat panjang. Setiap komentar dan/atau saran untuk perbaikan akan sangat dihargai. Harap sertakan penjelasan untuk memperjelas saran apa pun. Tujuannya adalah membuat Timer dengan variabel instan @detik yang diinisialisasi ke 0, lalu mengembalikan semua nilai sebagai string dengan format jam, menit, detik: 00:00:00. Jadi 12 detik => 00:00:12; 66 detik => 00:01:06; dan 4000 detik => 01:06:40. Terima kasih. Kode di bawah.
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