Відповіді:
Подобається це:
sleep(num_secs)
num_secs
Значення може бути цілим або з плаваючою крапкою.
Крім того, якщо ви пишете це в додатку Rails або ви включили бібліотеку ActiveSupport у свій проект, ви можете побудувати довші інтервали, використовуючи наступний синтаксис зручності:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Використовуйте сон так:
sleep 2
Це буде спати 2 секунди.
Будьте уважні, щоб дати аргументи. Якщо ви просто запустите sleep
, процес спатиме вічно. (Це корисно, коли ви хочете, щоб нитка спала, поки вона не прокинеться.)
Я вважаю until
дуже корисним зі сном. приклад:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
можна використовувати для сну, поки не буде досягнуто будь-якої умови (також люблю те, наскільки природно почувається синтаксис)
sleep 6
буде спати 6 секунд. Для більшої тривалості ви також можете використовувати sleep(6.minutes)
або sleep(6.hours)
.
minutes()
і hours()
це методи з числових даних, додані Ruby on Rails - тому не стандартні в Ruby - в класі ActiveSupport :: Duration. Вони досить зручні, хоча.
Реалізація секунд / хвилин / годин, що є рейковими методами. Зауважте, що неявні повернення не потрібні, але вони виглядають чистішими, тому я віддаю перевагу їм. Я не впевнений, що у Rails навіть є .days або якщо він піде далі, але це ті, що мені потрібно.
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
Після цього можна зробити:
sleep 5.seconds
спати 5 секунд. Можна sleep 5.minutes
спати протягом 5 хв. Можна sleep 5.hours
спати протягом 5 годин. І нарешті, ви можете sleep 5.days
спати протягом 5 днів ... Ви можете додати будь-який метод, який повертає значення self * (кількість секунд у цьому часовому інтервалі). Як вправу, спробуйте її виконувати місяцями!