如何在没有换行符的情况下在控制台上使用“放置”?

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 – 如何在没有任何特征点的情况下在墙壁等表面上放置/创建对象?

在纱线部署模式下在控制台上打印地图功能中的值

Windows Phone 8上的文本换行列表框

如何在 Eclipse 控制台中获得没有换行效果的回车?

如何在没有 pod 的情况下在 iOS 中设计概述的文本字段

如何在没有自动 DocBlock 格式的情况下在 NetBeans 中进行多行注释?