您需要使用 print 而不是 puts。此外,如果您希望点看起来平滑,则需要在每次打印后刷新标准输出缓冲区......
def print_and_flush(str)
print str
$stdout.flush
end
100.times do
print_and_flush "."
sleep 1
end
编辑: 我只是在调查 flush 背后的原因来回答 @rubyprince 的评论,并意识到这可以通过简单地使用 $stdout.sync = true
来清理一点......
$stdout.sync = true
100.times do
print "."
sleep 1
end
$stdout.flush
吗?..我使用的是 Ruby 1.8.7,我只用print
做了一些事情,我没有任何问题..print
本身时,它可以以块的形式出现,因为它可以存储在缓冲区中而不是立即写入(我不知道确切原因)。它也可能是特定于操作系统的。sync
输出一个字符串是一种过度杀伤力。然后,如果您的应用程序输出很多,它会变慢。