Ruby で書いてみる。
#!/usr/bin/env ruby
STDOUT.sync = true
text = ' Hello, world. This is a pen. My name is Pen. Good-bye world.'
len = 20
(0..text.size()-len).each{|i|
print "#{text[i,len]}\r"
sleep 0.1
}
print"\n"
STDOUT.sync = true が大事。
実行すると,順に表示されるはずが,数秒後一気に出力されてしまう。
これは,バッファリングされていることが原因なので,それを抑止する,
STDOUT.sync = true
をプログラムの頭に書いてやる事により解決した。
putsだときちんとsleepされるのに,printだとバッファされるのは何ででしょ。
rubyでsleepが機能しない( ∵ バッファリング): m6 BLOG
tags: ruby
Posted by NI-Lab. (@nilab)