sugulogの日記

Ruby基礎文法、繰り返し処理を学ぼう!timesメソッドとeachメソッド!!

スポンサードリンク

f:id:sugulog:20200914013007p:plain
こんにちは、すぐるです!

sugulogをお読みいただきありがとうございます!!

このブログは、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準に書いています。

少しでもお役に立てれば幸いです。

 

今回は、Rubyの基礎文法である

  • 繰り返し処理

について簡単に解説します!!

繰り返し処理とは、同じ内容を繰り返し行う処理のことで、ループ処理とも呼ばれたりします。

その為このブログを読むことで、繰り返し処理を行うtimesメソッド、eachメソッドについての違い、使い方まで理解することができます。

是非最後までご愛読ください。

 

今回は

  • timesメソッド

  • eachメソッド

の順で解説します!

それでは早速、みていきましょう!!

・timesメソッド

数値の値によって、その値の回数分だけ処理を繰り返すメソッド。

では実際に、どのように書くのかみていきましょう!

f:id:sugulog:20200913231915j:plain

またtimesメソッドはブロック変数というのが使えます。

ブロック変数とはメソッドの中でのみ使える変数で、メソッドによって入る値が異なります。

timesメソッドの場合は繰り返し処理が1回実行されるごとに、0から1ずつ増加する値が代入されます。

そのため0から始まるので、処理の中ではブロック変数に+1しています。

結果的に上記のコードは、1回目・2回目・3回目と出力します。

(+1しない場合は、0回目・1回目・2回目と出力されます。)

timesメソッドはメソッド内に記載された処理を数値分、繰り返し処理を行うメソッドということですね!!

・eachメソッド

配列に対し要素1つ1つを取り出し、繰り返し処理を行うメソッド。

こちらも実際に、どのように書くのかみていきましょう!

f:id:sugulog:20200914002616j:plain

eachメソッドの場合ブロック変数には、繰り返し処理が1回実行されるごとに、配列の添字0番からの要素が順番に代入されます。

そのため上記のコードでは、回数:1・回数:2・回数:3と出力します。

eachメソッドは配列の要素数分、繰り返し処理を行うメソッドということですね!!

 

復習問題です。

今回は以下のコードを解析してみましょう。

f:id:sugulog:20200914005352p:plain

 

答え

まずはfriendsという空の配列を用意しています。

その次にtimesメソッドを使い、繰り返し処理を5回実行しています。

処理の内容としては、friendという空のハッシュを作る。

入力させた名前をハッシュのnameキーとしてfriend(ハッシュ)に追加する。

入力させた年齢をハッシュのageキーとしてfriend(ハッシュ)に追加する。

その追加されたfriend(ハッシュ)を、friends(配列)に追加する。

次にeachメソッドを使いfriends(配列)に入っているfriend(ハッシュ)を1つずつ取り出し、その回数分の繰り返し処理を実行しています。

処理内容としては、if文を使いfriend(ハッシュ)のageが20以上の場合は、friend(ハッシュ)のnameを取得し、nameさんはお酒を飲めますを出力し、それ以外の場合はnameさんはソフトドリンクしか飲めません!を出力するという内容です。

最終的には、~さんはお酒を飲めます・~さんはソフトドリンクしか飲めません!・~さんはお酒を飲めます・~さんはお酒を飲めます・~さんはソフトドリンクしか飲めません!みたいに年齢によって、条件分岐処理されるというコードでした!!

今までの知識も含めたコードのため少し難しかったと思います。

今までの記事も含めてわからなかったところは、しっかり読み直し復習しましょう!

 

以上、今回のブログでした。

繰り返し処理を行うtimesメソッド、eachメソッドについての違い、使い方について理解は深まりましたか??

少しコードも複雑になってきましたが、焦らず1歩ずつ進んでいきましょう(≧∀≦)/ 

 

最後に!!

今後も、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準にブログを書いていきます。

少しでも気になった方はお試しでもいいので1度、読者登録お願いします!

またTwitterでもプログラミングに関することを中心に情報を発信してます。

宜しければそちらのフォローもお願いします。

最後までご愛読いただきありがとうございました!!