入力されたコメントを出力し、「終了」が入力されたら「終了します」と出力して終わるプログラムを作成します。
「終了」入力されるまで繰り返すので
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を入力して改行を取り除かないと「終了」を入力しても終わることが出来ていませんでした。