Je pensais que cela pourrait fonctionner Je m'attendais à voir "A b c d e f j" être imprimé un caractère à la fois avec 0,25 secondes entre chaque caractère. Mais plutôt la chaîne entière est imprimée à la fois. P> p>
5 Réponses :
Deux choses:
chacun code> dessus. LI>
-
désactiver tampon de sortie . p>
$stdout.sync = true
"a b c d d e f g h i j k".split(" ").each {|c| putc c ; sleep 0.25}
Vous n'avez pas besoin du paramètre à scinder (), car c'est la valeur par défaut. .split.ach code> fera.
@Mark, c'est cool! Je ne connais pas vraiment Ruby, je viens de répondre "pour le plaisir" mais j'étais une minute plus rapide que Erjiang: D
Essayez: qui fonctionne comme avec RUBY 1.9.2, qui n'a pas besoin de stdout pour affleurer chaque écriture. P> Si vous voulez l'intervaluage Espaces Supprimer % w code> et utilisez
chaque_char code> au lieu de
chacun code>. p> p> p>
Deux choses:
.ef.chagr code> à itérer sur les caractères. Dans Ruby 1.8, String.Chaque code> ira ligne-by-ligne. Dans Ruby 1.9, string.ach code> est obsolète. Li>
- Vous devez affleurer manuellement
$ stdout code> si vous voulez que les caractères apparaissent immédiatement. Sinon, ils ont tendance à être tamponnés de sorte que les personnages apparaissent tous à la fois à la fin. Li>
ol> . p> xxx pré> p>
Sortie des tampons de rubis et le rincera à la sortie standard après avoir atteint une certaine taille. Vous pouvez le forcer à rincer à affleurer.
slowly do "a b c d e f g h i j k" end
C'est ma façon de "impression lente":