Risposte:
Come questo:
sleep(num_secs)
Il num_secsvalore 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 untilmolto utile con il sonno. esempio:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
untilpuò essere utilizzato per dormire fino a quando non viene raggiunta una condizione (adoro anche la sensazione naturale della sintassi)
sleep 6dormirà 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.secondsdormire per 5 secondi. Puoi sleep 5.minutesdormire per 5 minuti. Puoi sleep 5.hoursdormire per 5 ore. E infine, puoi sleep 5.daysdormire 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!