(マジで)ゼロから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