1 行を出力し、しばらくしてからその行を更新するコマンド ライン プログラムを実行しました。しかし、Ruby では 1 行を出力してから別の行を出力することしかできないようです。
現在出力されているもの:
Downloading file:
11MB 294K/s
12MB 307K/s
14MB 294K/s
15MB 301K/s
16MB 300K/s
Done!
代わりに、私はこれを見たいです:
Downloading file:
11MB 294K/s
少し経ってから、次のメッセージが続きました。
Downloading file:
16MB 300K/s
Done!
私の Ruby スクリプトが出力する、ダウンロードしたファイルのサイズと転送速度を示す行は、更新された値全体を新しい行としてリストするのではなく、毎回上書きされます。
現在、出力を生成するために を使用していますputs
が、明らかにこのケース向けに設計されていません。この結果を達成できる別の出力方法はありますか?
ベストアンサー1
\r
カーソルを行の先頭に移動するにはを使用します。puts
は を追加するので使用しないでください。代わりに を使用してください。次のようになります\n
。print
print "11MB 294K/s"
print "\r"
print "12MB 307K/s"
ただし、覚えておいてほしいのは\r
、消去何もしない場合は、カーソルを戻すだけなので、前の出力を上書きするには出力にスペースを埋め込む必要があります (前の出力の方が長い場合)。
デフォルトでは、\n
標準出力に印刷されるとバッファがフラッシュされます。テキストがすぐに印刷されるようにするには、 STDOUT.flush
afterを使用する必要があるかもしれません。print