rubyで出力結果を更新する

2021-03-16

ruby, cui

要はキャリッジリターン使うと改行せずに出力結果を更新できるという話

例えば処理の進捗をコンソールに出力したいとき

1
2
3
4
5
6
7
8
9
10
11
12
13
14
100.times do |i|
  puts "#{i}/100" if i % 10 == 0
end

=> 0/100
10/100
20/100
30/100
40/100
50/100
60/100
70/100
80/100
90/100

まぁ進捗はわかるから別にイイんだけどなんかダサい感

1
2
3
4
5
6
100.times do |i|
  print "#{i}/100" if i % 10 == 0
end
puts # 最後の%消したいだけ

=> 0/10010/10020/10030/10040/10050/10060/10070/10080/10090/100

ダサいというか進捗分からない

1
2
3
4
5
6
100.times do |i|
  print "\r#{i}/100" if i % 10 == 0
end
puts

=> 90/100

文字だと伝わらない感じだけど進捗が上書きされていくのがイイ感じ

キャリッジリターンでカーソルを先頭に戻してあげればイイということのようだ

コメント

投稿する

投稿したコメントはご自身で削除できません

不適切なコメントと判断した場合は管理側で削除することがあります