在转到下一个等之前告诉Ruby Display一条线

时间:2014-09-19 20:39:25

标签: ruby

据我所知,您可以使用sleep(2),它在代码显示之前暂停x时间,但我希望它能够执行并逐行显示代码。例如:

x = 1
y = 2

puts x + y #I want this line to show first
sleep(5) #Above line shows but waiting 5 seconds before showing below
puts x + y * 2 #After 5 seconds this line shows
sleep(10) #After 10 seconds etc
puts (x + y) * 2

这在C编程中很有用,但不适用于Ruby。

1 个答案:

答案 0 :(得分:0)

这是一个缓冲问题。在使用$stdout.sync = true之前尝试添加putsSetting sync to true disables buffering.

x = 1
y = 2

$stdout.sync = true

puts x + y
sleep(5)
puts x + y * 2
sleep(10)
puts (x + y) * 2

或者,您每次都可以手动刷新stdout

x = 1
y = 2

puts x + y
$stdout.flush
sleep(5)

puts x + y * 2 
$stdout.flush
sleep(10)

puts (x + y) * 2
$stdout.flush

For more info on Ruby buffering, check out this well-done answer.