get.chomp вызывается первым - PullRequest
0 голосов
/ 04 июля 2018

Я новичок в Ruby. Я создал файл test.rb , и он имеет следующий код.

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

И, когда я запускаю это в терминале ruby ​​test.rb , он сначала показывает пустую строку (в ожидании от ввода пользователя). Там я ввел свое имя. И затем в новой строке отображается «Введите ваше имя», затем в новой строке отображается «Добро пожаловать, Танмай»

Tanmay
Enter your First Name
Welcome Tanmay

Перед запросом ввода должно отображаться «Введите ваше имя».

Я использую windows 10, ruby ​​2.5.1p57, Rails 5.2.0

Пожалуйста, помогите.

Заранее спасибо.

1 Ответ

0 голосов
/ 04 июля 2018

Установите $stdout.sync = true, чтобы все, что вы пишете на стандартный вывод (после этой точки), немедленно сбрасывалось.

По умолчанию ruby ​​будет буферизовать ввод-вывод, если считает, что записывает что-то неинтерактивное, потому что это повышает производительность, например, когда вы работаете. запись в файл.

В этом случае звучит так, как будто он угадывает неправильно ... но также кажется, что ваше приложение вряд ли выиграет от буферизации, поэтому можно просто переопределить значение по умолчанию, чтобы оно всегда было синхронным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...