私は現在、友人と演習 14 に取り組んでいます。これは、非常に単純な文字列補間とユーザー入力の取得です。私のコードは次のようになります。
user_name = ARGV.first
prompt = '> '
puts "Hi #{user_name}."
puts "I'd like to ask you a few questions."
puts "Do you like me #{user_name}? ", prompt
likes = $stdin.gets.chomp
puts = "Where do you live #{user_name}? ", prompt
lives = $stdin.gets.chomp
puts "What kind of computer do you have? ", prompt
computer = $stdin.gets.chomp
puts """
Alright, so you said #{likes} about liking me.
You live in #{lives}. Not sure where that is.
And you have a #{computer} computer. Nice.
"""
かなり単純に動作するはずですが、私が見つけたのは、likes=
行の後に、「どこに住んでいますか」を求める次の行が画面に表示されないにもかかわらず、lives=
プロンプトが表示されることです。つまり、「いいね」を入力した直後に、以前のプロンプト出力を表示せずに「ライン」プロンプトにジャンプします! で始まる次のプロンプトはcomputer=
、期待どおりに機能します。
Ruby 2.1.2 を使用していますが、2.2.3 でも同じ動作が見られます。オンライン REPLはこちら
なぜこれが起こるのですか?