hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

ターミナルから文字を入力

ターミナルから文字を入力できるようにするにはgetsメソッドを使う。

 getsメソッド

getsメソッドはユーザーからターミナルへ入力できるようにするメソッド。ユーザーが入力した値を文字列オブジェクトとしてプログラムに渡す。(返り値はユーザーが入力した値の文字列オブジェクト)

getsメソッドが呼ばれるとターミナル画面は入力待ちの状態になる
そこでキーボードから値を入力してエンターを押すと、getsメソッドは入力した文字をプログラムに返す。

sample.rb
1
2
3
  input = gets

  puts "入力した値は#{input}です"

打ち込んだ文字が出力されたあと、「入力した値は"ご自身で入力した文字"です」とターミナル上に表示される。
 inputという文字のところに、ご自身がターミナルで打ち込んだ文字が入る。

ここで重要な点は以下の2つ。

  • getsメソッドは返り値としてターミナルで入力された文字列を返す
  • getsメソッドはターミナルからの入力が終わるまでプログラムの処理を一回止める

 

要点チェック

 

getsメソッドの返り値

getsメソッドはターミナルからユーザーに入力を行わせ、入力された値の文字列オブジェクトを返り値として渡す

上記のsample.rbのソースコードを見るとgetsメソッドの返り値が変数inputに代入されているのがわかる。

 

要点チェック

 

プログラムの処理の順番

getsメソッドの特徴として入力が完了するまでプログラムの処理を中断するというものがある。
普通rubyのプログラムは上から下へと流れていく。

1
2
3
  puts 1
  puts 2
  puts 3

このプログラムを実行すれば上からputsメソッドが呼ばれ、1, 2, 3と順番にターミナルに出力される。

1
2
3
  puts title

  title = "時をかける少女"

このソースコードは3行目で変数titleを定義しているのに、1行目でtitleを使おうとしているのでエラーして実行に失敗する。
このようにプログラムとは必ず上から下に順番に実行されるというルールがある。

getsメソッドと処理の流れ

getsメソッドを使うとユーザーがターミナルで入力をするまでそこで一回プログラムを中断する
よってgetsメソッドより下のソースコードは入力が終わるまでは実行されないということ。

sample.rb
1
2
3
  input = gets

  puts "入力した値は#{input}です" # ユーザーの入力が終わるまで実行されない

この特徴によって、getsからの返り値を変数に入れ、その変数をgetsメソッドより後に書かれたソースコードで使うことができるというわけ。

 

要点チェック