Ruby不会在输出中读取回车符(\ r)?

时间:2015-01-08 07:35:34

标签: ruby output

在ruby中,如何将输出(通过puts方法)放在一行上,而不是一行一行,而我的控制台充满了输出。基本上我希望输出在一行上不断更新,并继续写入最后一个输出。我试过做一个' \ r'字符串末尾的字符,但ruby只是忽略它并继续打印我的while循环行的输出:

i=0
  while i<90
    puts  "#{i} matt lao \r"
    i+=1
  end

我只想要一条不断更新的线路。谢谢。

3 个答案:

答案 0 :(得分:2)

puts将始终在最后打印一个新行,因此它会回车,但之后又会换行。请改用print

90.times { |i| print "#{i} matt lao \r" }

要看到它实际做的正确,你可以坚持sleep

90.times { |i| print "#{i} matt lao \r"; sleep 0.01 }

答案 1 :(得分:0)

您需要使用print代替puts

例如:

90.times do |i|
  print "#{i} matt lao \r"; sleep 0.02
end

答案 2 :(得分:0)

您可以使用没有任何回车的印刷品,这样可以正常工作。

像这样

 2.1.1 :016 > 0.upto(4){|i| print "#{i} "}
 0 1 2 3 4  => 0 

puts会自动添加新行,而print则不会。