Rubyカテゴリを作っていないので、とりあえずrailsカテゴリで作成・・・
さて、getsメソッドを使うと、キーボードで入力した値を受け取ることが出来ます。
しかし、細かく見ていくと色々と気にしなければいけないことがあるので、それぞれの違いをメモっておきます。
gets
入力した内容を、文字列で改行付きで返す。
1 2 3 |
n = gets p n |
1 2 |
3 =>"3\n" |
putsで出力すると文字列なのか改行つきなのかよく分からないですが、pで出力するとよく分かります。
gets.chomp
入力した内容を、文字列で改行を外して返す。
1 2 3 |
n = gets.chomp p n |
1 2 |
3 =>"3" |
改行を意味する、「\n」が消えました。
改行があって困る場面は現実にあるのかどうかは知りませんが、条件式に使うときは注意が必要です。
1 2 3 4 |
n = gets p n p n == "3" |
1 2 3 |
3 =>"3\n" =>false |
改行がついていると、同じかどうかの判定でfalseが返ります。
1 2 3 4 |
n = gets.chomp p n p n == "3" |
1 2 3 |
3 =>"3" =>true |
chompで改行を外すことで、trueになりましたと。
gets.to_i
入力した内容を数値型で改行なしで返す。
1 2 3 |
n = gets.to_i p n |
1 2 |
3 =>3 |
“”が消えましたと。
改行の「\n」もないです。
文字を入力すると・・・
1 2 |
hello! =>0 |
0が返る。
gets.split
splitメソッドが文字列を分割して配列を返してくれます。
とりあえず例としてはこんな感じ。
1 2 3 |
n = gets.split p n |
1 2 |
blue yellow red =>["blue", "yellow", "red"] |
今回、splitの引数は何もないので、空文字部分で分割しています。
また、配列にせず、それぞれ変数に入れたい場合はこんな感じ。
1 2 3 4 |
a, b = gets.split p a p b |
1 2 3 |
blue red =>"blue" =>"red" |
aに”blue”、bに”red”が入りました。
gets.split.map(&:to_i)
入力した内容を、数値型で配列を返したい場合。
1 2 3 |
n = gets.split.map(&:to_i) p n |
1 2 |
12 34 56 =>[12, 34, 56] |
空文字部分で区切られ、数値型で配列に入りました。
同じように変数にそれぞれ入れることも可能。
1 2 3 4 5 |
a, b, c = gets.split.map(&:to_i) p a p b p c |
1 2 3 4 |
12 34 56 =>12 =>34 =>56 |
他にも色々取り出し方がありそうですが、最近使っているのはこれくらい。
それでは!
コメント