Почему моя программа принимает пользовательский ввод перед запросом пользователя? - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь создать консольную программу, которая спрашивает у пользователя его имя и приветствует его.Я пишу в Notepad ++ и запускаю его в консоли git bash.Мой код:

puts "Hello, please type in your name: "
name = gets.chomp
puts "Hello #{name}, it is a pleasure to meet you!"

Когда он запускается, он ожидает ввода данных пользователем, и после того, как он введен, он печатает:

Hello, please type in your name:
Hello <name_the_user_entered>, it is a pleasure to meet you!

Даже если приглашение пользователя является первым вкод, он принимает пользовательский ввод перед печатью любого теста.Я что-то упустил?

1 Ответ

0 голосов
/ 14 октября 2018

Ruby может буферизовать вывод.Чтобы форсировать это, используйте flush:

$stdout.puts "Hello, please type in your name: "
$stdout.flush
name = gets.chomp
puts "Hello #{name}, it is a pleasure to meet you!"

Но я думаю, что в более новых версиях Ruby это не должно быть необходимо.

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