入力されたコメントを出力し、「終了」が入力されたら「終了します」と出力して終わるプログラムを作成します。
「終了」入力されるまで繰り返すので
while true
end
を使って繰り返して
break
で抜ければいいので
while true
comment = gets
if comment != "終了"
puts "あなたのコメント: #{comment}"
else
puts "終了します"
break
end
end
と記述しました。
しかし
「終了」を入力したのに止まりません💦
そこで、gets
の後ろに.chomp
を追記して
while true
comment = gets.chomp
if comment != "終了"
puts "あなたのコメント: #{comment}"
else
puts "終了します"
break
end
end
と変更すると
無事「終了」で終わることができました☺️
なぜ.chomp
の記述が必要なのでしょうか?
chomp
は、文字列の末尾の改行コードを取り除いた値を返したり、文字列の終端が \r\n
であればその2文字を取り除くメソッドです。
しかし、今回のコードには\r\n
は記述していません。
実はgets
にはある特性があります。
irb(main):001:0> comment = "終了"
=> "終了"
irb(main):002:0> gets
終了
=> "終了\n"
irb(main):003:0> gets.chomp
終了
=> "終了"
このようにgets
の後にはキーボードのEnterを押したので「改行した」という意味で\n
が自動で入ってしまいます。
なので.chomp
を入力して改行を取り除かないと「終了」を入力しても終わることが出来ていませんでした。