我有一个方法,它通过循环 -- 我希望在控制台中每次循环输出一个 "."。然而,当我使用 puts "."
时,它会在每个 "." 后面添加一个换行符。
是否有一种方法让它只有连续的一行呢?
def print_and_flush(str)
print str
$stdout.flush
end
100.times do
print_and_flush "."
sleep 1
end
编辑:我刚刚在查阅 @rubyprince 的评论时研究了 flush 的原因,并意识到可以通过简单地使用 $stdout.sync = true
来进行优化...
$stdout.sync = true
100.times do
print "."
sleep 1
end
$stdout.flush
吗?我正在使用Ruby 1.8.7,只用了print
就完成了任务,没有出现任何问题。 - rubyprinceprint
命令可能会很有用。当你只是单独使用print
时,它可能会以块状输出,因为它可能会被存储在缓冲区中而不是立即写入(我不确定具体原因)。这也可能与操作系统有关。 - idlefingers