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_secsWartość 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 untilbardzo przydatny jest sen. przykład:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
untilmożna spać, dopóki nie zostanie spełniony jakikolwiek warunek (uwielbiam także naturalną składnię)
sleep 6bę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.secondsspać przez 5 sekund. Możesz sleep 5.minutesspać przez 5 minut. Możesz sleep 5.hoursspać przez 5 godzin. I na koniec możesz sleep 5.daysspać 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!