Antworten:
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:
> time = Time.now
> sleep 2.seconds until Time.now > time + 10.seconds # breaks when true
sleep(10.seconds)
until
man schlafen kann, bis eine Bedingung erfüllt ist (ich
sleep 6
wird für 6 Sekunden schlafen. Für eine längere Dauer können Sie auch sleep(6.minutes)
oder verwenden sleep(6.hours)
.
minutes()
und hours()
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.
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
Danach können Sie Folgendes tun:
sleep 5.seconds
5 Sekunden lang schlafen. Sie können sleep 5.minutes
5 Minuten schlafen. Sie können sleep 5.hours
5 Stunden schlafen. Und schließlich können Sie sleep 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!