Wie weist man ein Ruby-Programm an, eine beliebige Zeitspanne zu warten, bevor mit der nächsten Codezeile fortgefahren wird?
417
So was:
sleep(num_secs)
Der num_secs
Wert kann eine Ganzzahl oder ein Gleitkommawert sein.
Wenn Sie dies in einer Rails-App schreiben oder die ActiveSupport-Bibliothek in Ihr Projekt aufgenommen haben, können Sie längere Intervalle mithilfe der folgenden praktischen Syntax erstellen:
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Verwenden Sie Schlaf wie folgt:
sleep 2
Das wird 2 Sekunden lang schlafen.
Seien Sie vorsichtig, um ein Argument zu geben. Wenn Sie nur ausführen sleep
, wird der Prozess für immer schlafen. (Dies ist nützlich, wenn ein Thread so lange schlafen soll, bis er aufgeweckt ist.)
Ich finde es
until
sehr nützlich mit dem Schlaf. Beispiel:quelle
sleep(10.seconds)
until
man schlafen kann, bis eine Bedingung erfüllt ist (ichsleep 6
wird für 6 Sekunden schlafen. Für eine längere Dauer können Sie auchsleep(6.minutes)
oder verwendensleep(6.hours)
.quelle
minutes()
undhours()
sind Methoden auf Numerik hinzugefügt von Ruby on Rails - also nicht Standard verfügbar in Ruby - in der Active :: Dauer - Klasse. Sie sind jedoch recht praktisch.Implementierung von Sekunden / Minuten / Stunden, die Schienenmethoden sind. Beachten Sie, dass implizite Rückgaben nicht erforderlich sind, aber sauberer aussehen, daher bevorzuge ich sie. Ich bin mir nicht sicher, ob Rails überhaupt .days hat oder ob es weiter geht, aber das sind die, die ich brauche.
Danach können Sie Folgendes tun:
sleep 5.seconds
5 Sekunden lang schlafen. Sie könnensleep 5.minutes
5 Minuten schlafen. Sie könnensleep 5.hours
5 Stunden schlafen. Und schließlich können Siesleep 5.days
5 Tage lang schlafen ... Sie können jede Methode hinzufügen, die den Wert von self * (Anzahl der Sekunden in diesem Zeitraum) zurückgibt. Versuchen Sie als Übung, es monatelang umzusetzen!quelle