Rubyで出力する際の、p,puts,printの表示タイミングの違いは何ですか?
処理に時間がかかるプログラムを組んでいて、今何をしているのかを明確にしたいので、処理の最初と最後に標準出力を出したいです。
pだと、思い通りに表示されるのですが、puts,printで表示すると、最後に一気に表示されます。
ダブルクォーテーションなしで表示したいので、putsかprintを使用したいのですが…。
調べてみましたが、
pは型の表現あり(改行もあり)、putsは改行あり、printは改行なし
等の違いがあることは出てくるのですが、表示されるタイミングの違いは出てきませんでした。
表示のタイミングの違いはあるのでしょうか?
ソースは以下の様な形です。
Ruby
1HASH = {"hoge1" => 1, "hoge2" => 2} 2 3HASH.each do |hoge,num| 4 5 puts "start" 6 7 # 処理A 8 def shoriA(hikisuu1, hikisuu2) 9 puts "shoriA start" 10 # ここに時間がかかる処理がある 11 puts "shoriA end" 12 end 13 14 # 処理Aの呼び出し 15 shoriA("hikisuu1", "hikisuu2") 16 shoriA("hikisuu3", "hikisuu4") 17 shoriA("hikisuu5", "hikisuu6") 18 19 puts "end" 20 21end
上記はputsで記載しましたが、puts,printの場合は、初めの数分は何も表示されず、
start
shoriA start
shoriA end
shoriA start
shoriA end
shoriA start
shoriA end
end
と一気に表示されます。
pの場合(上記ソースのputsをpに変えただけ)は、
"start"
"shoriA start"
が表示されて、時間がたって
"shoriA end"
が表示されます。(以降も同じように表示される)
ソースは同じなのに、挙動(表示のタイミング)が違う理由が知りたいです。
また、pの表示タイミングで、"で囲われていない表示を行うにはどうすればよいのでしょうか?
回答1件
あなたの回答
tips
プレビュー