Ruby 程序运行不正常

Ruby 程序运行不正常,ruby,Ruby,我尝试运行以下简单代码: puts 4 i = gets puts i 它正在“工作”,但控制台要求输入一个字符串,然后它打印4,i以便我使用ruby 1.8.7、1.9.2和ree。您使用的是什么版本的ruby和操作系统?适合我使用ruby 1.8.7、1.9.2和ree。您使用的是什么版本的ruby和操作系统?您希望在这里实现什么? 通常情况下,解释器会在向您提供输出之前收集所有数据。这根本不是bash:)你希望在这里完成什么? 通常情况下,解释器会在向您提供输出之前收集所有数据。这根本不

我尝试运行以下简单代码:

puts 4
i = gets
puts i

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

以便我使用ruby 1.8.7、1.9.2和ree。您使用的是什么版本的ruby和操作系统?

适合我使用ruby 1.8.7、1.9.2和ree。您使用的是什么版本的ruby和操作系统?

您希望在这里实现什么?
通常情况下,解释器会在向您提供输出之前收集所有数据。这根本不是bash:)

你希望在这里完成什么?
通常情况下,解释器会在向您提供输出之前收集所有数据。这根本不是bash:)

获取之前添加
刷新
调用:

$stdout.flush

获取
之前添加
刷新
调用:

$stdout.flush

我猜您可能会受到输出缓冲的影响。但是您的代码示例没有显示程序如何“询问”输入,所以我猜您应该在ruby启动之前键入answer。然后ruby程序从输入缓冲区读取输入,因为数据不是直接从键盘读取的

您确定您的问题是由您向我们展示的代码引起的吗

通常,终端上以错误顺序显示数据的问题是由使用两种不同的输出流引起的:
STDIN
STDERR
。每个流可能决定在不同的时间刷新其数据


如果您想确保在发生某些事情之前显示文本(如本例中),请按照Yossi的建议使用“flush”命令。

我想您可能会受到输出缓冲的影响。但是您的代码示例没有显示程序如何“询问”输入,所以我猜您应该在ruby启动之前键入answer。然后ruby程序从输入缓冲区读取输入,因为数据不是直接从键盘读取的

您确定您的问题是由您向我们展示的代码引起的吗

通常,终端上以错误顺序显示数据的问题是由使用两种不同的输出流引起的:
STDIN
STDERR
。每个流可能决定在不同的时间刷新其数据


如果要确保在发生某些事情之前显示文本(如本例中),请按照Yossi的建议使用“flush”命令。

而不是显式调用
$stdout.flush

$stdout.sync = true

而不是显式调用
$stdout.flush

$stdout.sync = true

你还没说完这个句子。发生了什么事什么句子?我是一个variable@Gilad乃缦:我觉得阿森7号很幽默。但是,要避免混淆,我已经突出显示了
4
I
作为代码。你还没有完成这个句子。发生了什么事什么句子?我是一个variable@Gilad乃缦:我觉得阿森7号很幽默。但是,请避免混淆,我已将
4
I
突出显示为代码。每次我想使用gets时,我都必须调用flush?如果你需要屏幕始终保持最新,你应该在每次打印时调用它。而每次我想使用gets时,我都必须调用flush?如果你需要屏幕始终保持最新,你每次打印时都应该打电话。我只需要打一次?我只需要打一次?