(マジで)ゼロからRubyする編 〜gets.to_i〜
前回の疑問が解決した。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
#{} の中に変数を書いておくと、その変数の中身が文字列として埋め込まれる。
これを文字列としてはなく、integerとして認識させるにはどうしたらいいんだろうか?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
というとこだったんだけど、正確には、
string(文字列)を、integer(整数)に変換する。
そこで、to_i ですよ!ヽ(≧▽≦)ノ
a=10 b=20 puts "#{a+b}"
とした場合の実行結果は 30
でも、この30って実は整数の30ではなくて文字数の30だったりする。
p "#{a+b}" #=>"30"
見た目は同じだからいいじゃん。
ってこの場合は思うんだけど、じゃあ、こういうのはどうだろう。
たとえば、。
menu=['yoshoku','italian','japanese' ] puts 'dorenishiyoukana please select 1 2 3’ n=gets.chomp puts "#{menu[n-1]}"
getsっていうのは、その後にキーボードで入力した値を文字列で返すメソッドで、
改行とセットになってるメソッドなので、改行をはずす為に、chompってのをつける。
(今回は、chompなくてもいいんだけど、存在を忘れそうなので、あえて書いておくw)で、この、
n=gets.chomp
なんだけど、私的には、「2」を入力したら、[2-1]=>[1]となり、
menu[1]=>'italian' なので、italian と表示されて欲しい。
でも、 puts 'dorenishiyoukana please select 1 2 3’の表示の後で数字の「 2 」を入力したとする。
でも、この n は、整数の「2」ではなくて、文字列の「"2"」となってるので、
puts "#{menu[n-1]}"の[n-1]は[2-1]ではなく、["2"-1]となり、エラーが出る。つまり、
[2-1]という形にしたければ、文字列 "2" を、整数 2 に変換しないといけない。
で、ここで、to_i を使う。
menu=['yoshoku','italian','japanese' ] puts ''dorenishiyoukana please select 1 2 3’ n=gets.to_i puts "#{menu[n-1]}"
今度は、きちんと italian って表示される!ヽ(≧▽≦)ノ
《今日のまとめ》
gets:文字列入力専用&改行付。キーボードで入力した値を文字列で返すメソッド
to_i: String(文字列)クラスのメソッド。
元になった文字列を整数に変換した値を返す。
gets.to_i:gets でキーボードから文字列(Stringクラスのオブジェクト)が返り、
その値である文字のメソッド (String#to_i)が実行されて、入力された文字列
を整数に変換した値が返る。
《おまけ》
文字列(String)を 整数(Integer)に変換はto_i
整数(Integer)を 文字列(String)に変換は to_s