Nur zum Spaß, wie schreibe ich ein Ruby-Programm, das langsam druckt, um ein Zeichen nach dem anderen auszugeben?

8

Ich dachte, das könnte funktionieren

%Vor%

Ich erwartete, dass "a b c d e f j" mit jedem Zeichen zwischen 0,25 Zeichen gedruckt wird. Stattdessen wird die gesamte Zeichenfolge gleichzeitig gedruckt.

    
Frank 08.02.2011, 01:15
quelle

5 Antworten

5

Zwei Dinge:

  1. Sie müssen .each_char verwenden, um über die Zeichen zu iterieren. In Ruby 1.8 wird String.each Zeile für Zeile angezeigt. In Ruby 1.9 ist String.each veraltet.
  2. Sie sollten $stdout manuell leeren, wenn die Zeichen sofort angezeigt werden sollen. Andernfalls neigen sie dazu, gepuffert zu werden, so dass die Zeichen am Ende alle gleichzeitig erscheinen.

.

%Vor%     
erjiang 08.02.2011, 01:23
quelle
5

Zwei Dinge:

  1. Sie müssen diese Zeichenfolge in ein Array aufteilen, bevor Sie each darauf verwenden.
  2. Schalten Sie die Ausgabepufferung aus.

    %Vor%
Nathan 08.02.2011 01:21
quelle
2

Ruby puffert die Ausgabe und spült sie auf die Standardausgabe, nachdem sie eine bestimmte Größe erreicht hat. Du kannst es so erzwingen wie es ist.

%Vor%

Hinweis: Wenn beim Drucken keine Leerzeichen zwischen den Zeichen stehen sollen, verwenden Sie .split.each anstelle von .each_char .

Nur zum Spaß : mit einer Definition wie dieser:

%Vor%

Sie könnten das tun:

%Vor%     
Mark Thomas 08.02.2011 01:26
quelle
1

Versuchen:

%Vor%

Das funktioniert wie mit Ruby 1.9.2, das STDOUT nicht benötigt, um zwischen jedem Schreiben zu löschen.

Wenn Sie die Zwischenräume entfernen möchten, entfernen Sie %w und verwenden Sie each_char anstelle von each .

    
the Tin Man 08.02.2011 01:22
quelle
0

Dies ist meine Art "langsames Drucken":

%Vor%     
mathematicacool 09.05.2016 09:20
quelle

Tags und Links