Risposte:
Come questo:
sleep(num_secs)
Il num_secs
valore può essere un numero intero o float.
Inoltre, se stai scrivendo questo all'interno di un'app Rails o hai incluso la libreria ActiveSupport nel tuo progetto, puoi costruire intervalli più lunghi usando la seguente sintassi di convenienza:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Usa il sonno in questo modo:
sleep 2
Dormirà per 2 secondi.
Fai attenzione a dare una discussione. Se esegui semplicemente sleep
, il processo rimarrà inattivo per sempre. (Questo è utile quando vuoi che un thread dorma fino a quando non viene svegliato.)
Trovo until
molto utile con il sonno. esempio:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
può essere utilizzato per dormire fino a quando non viene raggiunta una condizione (adoro anche la sensazione naturale della sintassi)
sleep 6
dormirà per 6 secondi. Per una durata più lunga, puoi anche usare sleep(6.minutes)
o sleep(6.hours)
.
minutes()
e hours()
sono i metodi numerici aggiunti da Ruby on Rails - quindi non standard disponibile in Ruby - nella classe ActiveSupport :: Duration. Sono abbastanza convenienti però.
Implementazione di secondi / minuti / ore, che sono metodi di rotaie. Nota che i rendimenti impliciti non sono necessari, ma sembrano più puliti, quindi li preferisco. Non sono sicuro che Rails abbia anche .days o se va oltre, ma questi sono quelli di cui ho bisogno.
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
Dopo questo, puoi fare:
sleep 5.seconds
dormire per 5 secondi. Puoi sleep 5.minutes
dormire per 5 minuti. Puoi sleep 5.hours
dormire per 5 ore. E infine, puoi sleep 5.days
dormire per 5 giorni ... Puoi aggiungere qualsiasi metodo che restituisca il valore di sé * (quantità di secondi in quel lasso di tempo). Come esercizio, prova ad implementarlo per mesi!