Jak powiedzieć programowi Ruby, aby odczuwał dowolną ilość czasu przed przejściem do następnego wiersza kodu?
Jak powiedzieć programowi Ruby, aby odczuwał dowolną ilość czasu przed przejściem do następnego wiersza kodu?
Odpowiedzi:
Lubię to:
sleep(num_secs)
num_secs
Wartość może być liczbą całkowitą lub pływaka.
Ponadto, jeśli piszesz to w aplikacji Rails lub włączyłeś bibliotekę ActiveSupport do swojego projektu, możesz konstruować dłuższe interwały, używając następującej wygodnej składni:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Użyj snu w taki sposób:
sleep 2
To będzie spało przez 2 sekundy.
Uważaj, aby podać argument. Jeśli po prostu uruchomisz sleep
, proces będzie spał na zawsze. (Jest to przydatne, gdy chcesz, aby wątek spał do momentu jego przebudzenia).
Uważam, że until
bardzo przydatny jest sen. przykład:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
można spać, dopóki nie zostanie spełniony jakikolwiek warunek (uwielbiam także naturalną składnię)
sleep 6
będzie spał przez 6 sekund. Przez dłuższy czas możesz także użyć sleep(6.minutes)
lub sleep(6.hours)
.
minutes()
i hours()
są to metody liczbowe dodane przez Ruby on Rails - więc nie są standardowo dostępne w Ruby - w klasie ActiveSupport :: Duration. Są jednak dość wygodne.
Realizacja sekund / minut / godzin, które są metodami szynowymi. Pamiętaj, że niejawne zwroty nie są potrzebne, ale wyglądają na czystsze, więc wolę je. Nie jestem pewien, czy Railsy mają nawet .dni lub jeśli idzie dalej, ale to są te, których potrzebuję.
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
Następnie możesz:
sleep 5.seconds
spać przez 5 sekund. Możesz sleep 5.minutes
spać przez 5 minut. Możesz sleep 5.hours
spać przez 5 godzin. I na koniec możesz sleep 5.days
spać przez 5 dni ... Możesz dodać dowolną metodę, która zwraca wartość self * (ilość sekund w tym przedziale czasowym). Jako ćwiczenie spróbuj wdrożyć je przez miesiące!