背景
某転職テストのスキルチェックを受けた結果がボロボロで悔しくなり、某スキルチェックサイトで毎日コーディングして訓練しようと思い始めた所、あまりにも単純な問題で詰まり悲しみに包まれかけたのでアウトプットします。
また、Railsエンジニア志望なのでRubyのコードを書いていきます。
どことは書いてはないですがスキルチェックの内容は外部流出厳禁なので、一応似たような形に書き換えてます。
getsメソッド
getsメソッドはユーザーがキーボードで入力した値を文字列として取得するメソッド。
という説明自体は間違っていないのですが、
sample.rb
# 入力した値が"Hello"だった場合、”World"を出力しましょう。
input = gets #Helloを入力する
if input == "Hello"
puts "World"
else
puts "Helloではありません"
end
> "Helloではありません"
のように、間違いなくHelloを入力しているのにfalseが返ってくるんですね。えぇー!?って思いますやん。
調べた所、getsメソッドは正確に言うと、
入力した値の末尾に改行が付与された文字列として取得するメソッド
となります。
ターミナル(irb)
irb(main):001:0> input = gets
Hello
=> "Hello\n" #末尾に\nが付く
マジか…
このように1分で解けそうな問題なのに原因が分からず、結局50分掛かりました。ぐやじい〜〜
と言うことで、今回の問題のソリューションはこれ。
sample.rb
# 入力した値が"Hello"だった場合、”World"を出力しましょう。
input = gets.chomp # ここー!!!!
if input == "Hello"
puts "World"
else
puts "Helloではありません"
end
> "World"
chompを付けることで改行をなくせるんですね。
基礎中の基礎とはいえ普段使わないメソッドだから勉強になりました