如何在没有换行符的情况下在控制台上使用“放置”?
Posted
技术标签:
【中文标题】如何在没有换行符的情况下在控制台上使用“放置”?【英文标题】:How can I use "puts" to the console without a line break in ruby on rails? 【发布时间】:2011-07-02 03:01:32 【问题描述】:我有一个循环的方法——我希望它输出一个“。”每个循环,所以我可以在控制台中看到它。但是,当我使用puts "."
时,它会在每个末尾添加一个换行符。
如果有办法让它只有一条连续的线?
【问题讨论】:
【参考方案1】:您需要使用 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
时,它可以以块的形式出现,因为它可以存储在缓冲区中而不是立即写入(我不知道确切原因)。它也可能是特定于操作系统的。
我用@stdout.flush 尝试过...改用.sync=true 有什么好处吗?
我认为将 stdout 设置为sync
是为了输出一个字符串而过度杀伤力。然后,如果您的应用程序输出很多,它会变慢。以上是关于如何在没有换行符的情况下在控制台上使用“放置”?的主要内容,如果未能解决你的问题,请参考以下文章
ARCore – 如何在没有任何特征点的情况下在墙壁等表面上放置/创建对象?