Comment dire à un programme Ruby d'attendre un temps arbitraire avant de passer à la ligne de code suivante ?
Attends, il va dormir pour toujours, ou jusqu'à ce qu'il soit "réveillé" ? Qu'est-ce que ça veut dire "réveillé" ?
Comment dire à un programme Ruby d'attendre un temps arbitraire avant de passer à la ligne de code suivante ?
Comme ça :
sleep(num_secs)
Le site num_secs
La valeur peut être un entier ou un flottant.
De plus, si vous écrivez ceci dans une application Rails, ou si vous avez inclus la bibliothèque ActiveSupport dans votre projet, vous pouvez construire des intervalles plus longs en utilisant la syntaxe suivante :
sleep(4.minutes)
# or, even longer...
sleep(2.hours); sleep(3.days) # etc., etc.
# or shorter
sleep(0.5) # half a second
Utilisez dormir comme ça :
sleep 2
Ça va dormir pendant 2 secondes.
Faites attention à donner un argument. Si vous ne faites que courir sleep
le processus sera mis en sommeil pour toujours. (C'est utile lorsque vous voulez qu'un thread dorme jusqu'à ce qu'il soit réveillé).
Oui, ici c'est la même chose parce qu'il utilise la même entrée (heure) que celle proposée par sleep. Je voulais souligner comment until
peut être utilisé pour dormir jusqu'à ce que n'importe quelle condition soit remplie (j'aime aussi la sensation naturelle de la syntaxe)
Cela me fait mal à la tête. Pouvez-vous fournir un exemple différent de celui-ci pour montrer la valeur de l'utilisation de until
au lieu de simplement sleep(10.seconds)
?
Implémentation des secondes/minutes/heures, qui sont des méthodes de rails. Notez que les retours implicites ne sont pas nécessaires, mais ils sont plus propres, donc je les préfère. Je ne suis pas sûr que Rails dispose de .days ou qu'il aille plus loin, mais ce sont les méthodes dont j'ai besoin.
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
Après cela, vous pouvez le faire : sleep 5.seconds
pour dormir pendant 5 secondes. Vous pouvez faire sleep 5.minutes
pour dormir pendant 5 minutes. Vous pouvez faire sleep 5.hours
pour dormir pendant 5 heures. Et enfin, vous pouvez faire sleep 5.days
pour dormir pendant 5 jours... Vous pouvez ajouter n'importe quelle méthode qui renvoie la valeur de self * (nombre de secondes dans ce laps de temps). Comme exercice, essayez de l'implémenter pendant des mois !
Je ne suis pas sûr des votes négatifs sur cette question, mais il se pourrait que ce soit le cas. minutes()
y hours()
sont des méthodes numériques ajoutées par Ruby on Rails - donc non disponibles en Ruby - dans la classe ActiveSupport::Duration. Elles sont cependant très pratiques.
Je pense que la raison principale des downvotes est que @vijaya_chowdary a reposté la réponse correcte votée 8 ans plus tard. Je considère que c'est pour le moins étrange...
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.