インターネットに掲載されているドリル問題を解いていたときにrubyのgets
とgets.chomp
の違いについて新たな発見があったためアウトプットして行きます!
結論
改行は1文字に含まれる!
は?っ思った方もいらっしゃるでしょう。私にとっては新たな発見だったのです...。
以下のコードを例にみてみます。
ruby.rb
str = gets
puts str.length
getsメソッドを使用しているためターミナルが入力待ちの状態になります。
そこで'abc'と入力すると4と出力されます。
てっきり3が返ってくると思っていた私は「なぜ!!????」とプチパニック状態に笑
もしかしてと思いgets.chomp
で同じことを行うと予想通り3と返ってきました。
最後に
今まではchomp
をつけることで改行しないんだよな〜くらいの認識でしかありませんでした。
返り値が変わってくるというのは新たな発見でした。
length
メソッドでは改行だけではなく空白も1文字としてカウントされますが、なかなかその感覚に慣れておらず、変な感じがしてしまいます。これは慣れなのでしょうかね?