程序运行不按顺序

时间:2011-07-05 07:34:47

标签: ruby

我尝试运行这个简单的代码:

puts 4
i = gets
puts i

它正在“工作”,但是控制台要求输入一个字符串,然后打印4i

5 个答案:

答案 0 :(得分:4)

flush之前添加gets来电:

$stdout.flush

答案 1 :(得分:1)

而不是显式调用$stdout.flush

$stdout.sync = true

答案 2 :(得分:0)

为了我使用ruby 1.8.7,1.9.2和ree工作。您使用的是什么版本的ruby和操作系统?

答案 3 :(得分:0)

你希望在这里完成什么? 通常,解释器会在向您显示输出之前收集所有数据。这简直不是bash:)

答案 4 :(得分:0)

我猜你可能会遇到输出缓冲。但是你的代码示例没有显示程序如何“询问”输入,所以我猜你在ruby开始之前键入了答案。然后你的ruby程序从输入缓冲区读取输入,因为数据不是直接从键盘读取的。

您确定问题是由您向我们展示的确切的代码造成的吗?

通常使用两个不同的输出流(例如STDINSTDERR)会导致终端上显示的数据错误顺序出现问题。每个流可能决定在不同时间刷新其数据。

如果你想确保在事情发生之前显示文本(如本例所示),请使用'flush'命令,正如Yossi建议的那样。