Ruby 没有在输出中读取回车符 return (\r)?
Ruby doesn't read carriage return (\r) in output?
在 ruby 中,我如何使我的输出(通过 puts 方法)在一行上,而不是一行接一行,并且我的控制台被输出淹没。基本上我希望输出在一行中不断更新,并继续写入最后一个输出。我尝试在字符串末尾添加一个 '\r' 字符,但 ruby 只是忽略它并继续逐行打印 while 循环的输出:
i=0
while i<90
puts "#{i} matt lao \r"
i+=1
end
我只想要一个不断更新的行。谢谢。
您需要使用 print
而不是 puts
。
例如:
90.times do |i|
print "#{i} matt lao \r"; sleep 0.02
end
puts
总是会在末尾打印一个新行,所以它正在做你的马车 return 但之后是一个新行。请改用 print
。
90.times { |i| print "#{i} matt lao \r" }
要查看它是否确实在做正确的事情,您可以坚持 sleep
:
90.times { |i| print "#{i} matt lao \r"; sleep 0.01 }
您可以在没有任何回车的情况下使用打印 return,这样就可以正常工作。
像这样
2.1.1 :016 > 0.upto(4){|i| print "#{i} "}
0 1 2 3 4 => 0
puts
会自动添加一个新行,而 print
不会。
在 ruby 中,我如何使我的输出(通过 puts 方法)在一行上,而不是一行接一行,并且我的控制台被输出淹没。基本上我希望输出在一行中不断更新,并继续写入最后一个输出。我尝试在字符串末尾添加一个 '\r' 字符,但 ruby 只是忽略它并继续逐行打印 while 循环的输出:
i=0
while i<90
puts "#{i} matt lao \r"
i+=1
end
我只想要一个不断更新的行。谢谢。
您需要使用 print
而不是 puts
。
例如:
90.times do |i|
print "#{i} matt lao \r"; sleep 0.02
end
puts
总是会在末尾打印一个新行,所以它正在做你的马车 return 但之后是一个新行。请改用 print
。
90.times { |i| print "#{i} matt lao \r" }
要查看它是否确实在做正确的事情,您可以坚持 sleep
:
90.times { |i| print "#{i} matt lao \r"; sleep 0.01 }
您可以在没有任何回车的情况下使用打印 return,这样就可以正常工作。
像这样
2.1.1 :016 > 0.upto(4){|i| print "#{i} "}
0 1 2 3 4 => 0
puts
会自动添加一个新行,而 print
不会。