gets.chomp首先被调用

时间:2018-07-04 09:59:08

标签: ruby-on-rails ruby

我是Ruby的新手。我创建了一个文件 test.rb ,它具有以下代码。

puts "Enter your First Name"
fname = gets.chomp
puts "Welcome #{fname}"

而且,当我在终端 ruby​​ test.rb 中运行此命令时,它首先显示空行(等待用户输入)。在那里我输入了我的名字。然后在新行上显示“输入您的名字”,然后在新行上显示“ Welcome Tanmay”

Tanmay
Enter your First Name
Welcome Tanmay

在要求输入之前,它应该显示“输入您的名字”。

我正在使用Windows 10,ruby 2.5.1p57,Rails 5.2.0

请帮助。

谢谢。

1 个答案:

答案 0 :(得分:2)

设置$stdout.sync = true可以强制将您写入stdout的所有内容(此后)立即清除。

默认情况下,如果ruby认为正在写非交互式内容,它将缓冲I / O,因为这样可以提高性能,例如写入文件。

在这种情况下,听起来好像是在猜错……但也听起来您的应用程序不太可能从曾经的缓冲中受益,因此可以安全地覆盖默认值以始终保持同步。