Bagaimana Anda memberi tahu program Ruby untuk menunggu dalam jumlah waktu yang sewenang-wenang sebelum pindah ke baris kode berikutnya?
Bagaimana Anda memberi tahu program Ruby untuk menunggu dalam jumlah waktu yang sewenang-wenang sebelum pindah ke baris kode berikutnya?
Jawaban:
Seperti ini:
sleep(num_secs)
The num_secs
nilai dapat integer atau float.
Juga, jika Anda menulis ini di dalam aplikasi Rails, atau telah memasukkan pustaka ActiveSupport dalam proyek Anda, Anda dapat membuat interval yang lebih lama menggunakan sintaksis kenyamanan berikut:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Gunakan tidur seperti ini:
sleep 2
Itu akan tidur selama 2 detik.
Hati-hati memberi argumen. Jika Anda hanya menjalankan sleep
, proses akan tidur selamanya. (Ini berguna ketika Anda ingin utas tidur sampai terbangun.)
Saya merasa until
sangat berguna dengan tidur. contoh:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
bisa digunakan untuk tidur sampai kondisi apa pun tercapai (juga suka betapa alami rasanya sintaksis)
sleep 6
akan tidur selama 6 detik. Untuk durasi yang lebih lama, Anda juga dapat menggunakan sleep(6.minutes)
atau sleep(6.hours)
.
minutes()
dan hours()
merupakan metode angka yang ditambahkan oleh Ruby on Rails - jadi bukan standar yang tersedia di Ruby - di kelas ActiveSupport :: Duration. Mereka cukup nyaman.
Implementasi detik / menit / jam, yang merupakan metode rel. Perhatikan bahwa pengembalian implisit tidak diperlukan, tetapi mereka terlihat lebih bersih, jadi saya lebih suka mereka. Saya tidak yakin Rails bahkan memiliki .days atau jika berjalan lebih jauh, tetapi ini adalah yang saya butuhkan.
class Integer
def seconds
return self
end
def minutes
return self * 60
end
def hours
return self * 3600
end
def days
return self * 86400
end
end
Setelah ini, Anda bisa melakukan:
sleep 5.seconds
tidur selama 5 detik. Anda bisa sleep 5.minutes
tidur selama 5 menit. Anda bisa melakukannya sleep 5.hours
selama 5 jam. Dan akhirnya, Anda dapat melakukannya sleep 5.days
selama 5 hari ... Anda dapat menambahkan metode apa pun yang mengembalikan nilai diri * (jumlah detik dalam jangka waktu itu). Sebagai latihan, cobalah menerapkannya selama berbulan-bulan!