Como você diz a um programa Ruby para esperar uma quantidade arbitrária de tempo antes de passar para a próxima linha de código?
418
Como isso:
sleep(num_secs)
O num_secs
valor pode ser um número inteiro ou flutuante.
Além disso, se você estiver escrevendo isso em um aplicativo Rails ou tiver incluído a biblioteca ActiveSupport em seu projeto, poderá construir intervalos mais longos usando a seguinte sintaxe de conveniência:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Use o sono da seguinte maneira:
sleep 2
Isso vai dormir por 2 segundos.
Tenha cuidado para argumentar. Se você apenas executar sleep
, o processo será suspenso para sempre. (Isso é útil quando você deseja que um thread durma até que seja despertado.)
Eu acho
until
muito útil dormir. exemplo:fonte
sleep(10.seconds)
until
pode ser usado para dormir até que qualquer condição seja alcançada (também adoro a naturalidade da sintaxe)sleep 6
dormirá por 6 segundos. Por um longo período, você também pode usarsleep(6.minutes)
ousleep(6.hours)
.fonte
minutes()
ehours()
os métodos numéricos adicionados pelo Ruby on Rails - portanto, não estão disponíveis no Ruby - na classe ActiveSupport :: Duration. Eles são bastante convenientes.Implementação de segundos / minutos / horas, que são métodos rails. Observe que retornos implícitos não são necessários, mas eles parecem mais limpos, então eu os prefiro. Não tenho certeza se o Rails ainda tem dias. Ou se vai mais longe, mas esses são os que eu preciso.
Depois disso, você pode fazer:
sleep 5.seconds
dormir por 5 segundos. Você pode fazersleep 5.minutes
para dormir por 5 min. Você pode fazersleep 5.hours
para dormir por 5 horas. E, finalmente, você podesleep 5.days
dormir cinco dias ... Você pode adicionar qualquer método que retorne o valor de si * (quantidade de segundos nesse período de tempo). Como exercício, tente implementá-lo por meses!fonte