2011-09-09 77 views
9

是否有一种简单的方法可以让Ruby在一行中打印,然后在下一次打印时,从一开始就打印到同一行。Ruby在同一行上多次打印

我想在生成文件时在stdout上显示一个简单的文件计数器。它看起来像是屏幕上相同位置的快速更新号码。

回答

16

可以使用\ r ..

while(true) do 
    print "\\\r" 
    print "|\r" 
    print "/\r" 
end 

将打印的字符,然后移动光标返回并打印了它,使有点像飞旋事情。否则,你可以看看像诅咒....(https://github.com/rkumar/rbcurse为红宝石包装)

0

如果您打印到类似终端的东西,您可以使用控制字符或诅咒。如果你知道你正在处理的物品有多少,那么只需制作一个文本进度条就可以更容易一些,不过,就像wget/etc一样。

6

你可以尝试这样的事情:

print "Hello" 
print 13.chr 
print "123" 

如果你的控制台支持换行,那么它应该取代第一字符和打印“123lo”。用计数器可能如下示例如下:

100.times{|x| print x; print 13.chr; sleep 0.01} 
+0

令人生气的是,这在Ubuntu上本地工作,但不通过SSH在SUSE上表现。顺便说一句 - 不是一个CR而不是LF – stjohnroe