¿Cómo le dice a un programa Ruby que espere una cantidad arbitraria de tiempo antes de pasar a la siguiente línea de código?
¿Cómo le dice a un programa Ruby que espere una cantidad arbitraria de tiempo antes de pasar a la siguiente línea de código?
Respuestas:
Me gusta esto:
sleep(num_secs)
El num_secs
valor puede ser un entero o flotante.
Además, si está escribiendo esto dentro de una aplicación Rails, o ha incluido la biblioteca ActiveSupport en su proyecto, puede construir intervalos más largos utilizando la siguiente sintaxis:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Usa el sueño así:
sleep 2
Eso dormirá por 2 segundos.
Tenga cuidado de dar una discusión. Si solo corres sleep
, el proceso dormirá para siempre. (Esto es útil cuando quieres que un hilo se duerma hasta que se despierte).
Me parece until
muy útil con el sueño. ejemplo:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
se puede usar para dormir hasta que se logre cualquier condición (también me encanta lo natural que se siente la sintaxis)
sleep 6
dormirá por 6 segundos. Para una mayor duración, también puede usar sleep(6.minutes)
o sleep(6.hours)
.
minutes()
yhours()
son métodos en números agregados por Ruby on Rails, por lo que no está disponible de forma estándar en Ruby, en la clase ActiveSupport :: Duration. Sin embargo, son bastante convenientes.
Implementación de segundos / minutos / horas, que son métodos de rieles. Tenga en cuenta que los retornos implícitos no son necesarios, pero se ven más limpios, por lo que los prefiero. No estoy seguro de que Rails tenga .days o si va más allá, pero estos son los que necesito.
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
Después de esto, puede hacer:
sleep 5.seconds
dormir durante 5 segundos. Tu puedes hacersleep 5.minutes
para dormir durante 5 min. Puedes hacerlo sleep 5.hours
para dormir durante 5 horas. Y finalmente, puede sleep 5.days
dormir 5 días ... Puede agregar cualquier método que devuelva el valor de self * (cantidad de segundos en ese período de tiempo). Como ejercicio, ¡intente implementarlo durante meses!