【Rails】each do で何ができるかな

rails

こんにちは。tekute-kuです。

今回はRubyに出てくるeachメソッドをまとめてみたいと思います。初学者が初学者向きに書いています。

記事を書いた目的

eachメソッドは便利でよく使いますが、他にどんな使い方があるのか気になったためまとめてみました。自分の備忘録と他の方の役に立てば幸いです。

eachメソッドとは

eachメソッドとは主に配列の要素分の処理を繰り返し実行したい時に使用するメソッドです。配列を指定してeachメソッドを実行すると、配列のインデックス番号0から繰り返し処理が実行されていきます。

インデックス番号とは配列に割り振られた番号で0から始まります。

例:[ くま , トラ , ライオン , ゾウ ] ⇨[ 0 , 1 , 2 , 3 ]

eachメソッドの書き方

2通りの書き方があり、「do」を使って「end」で終了する書き方と「do」、「end」を使用しない書き方があります。

オブジェクト.each do |変数|
 繰り返し処理
end

「do」、「end」を省略した書き方

オブジェクト.each { |変数|
繰り返し処理
}

ブロック内で配列の要素を使用するときは変数名を指定します。

変数名は任意ですので何でも構いません。

eachメソッドにおける3つの基本的な使い方

eachメソッドは様々な使い方がありますが、ここでは基本的な3つの使い方を紹介していきます。

  • 配列の要素分繰り返す
  • 範囲オブジェクトを参照する
  • ハッシュの要素分繰り返す

順番に見ていきましょう!

配列の要素分繰り返す

最も基本的な使い方です。

実際にプログラムを書いて確認していきましょう。

animals = ["lion","tiger","bear","elephant"]

animals.each do |animal|
 puts animal
end

実行結果

lion
tiger
bear
elephant

配列を順番に処理しているのがわかります。

ちなみに|変数|の変数名は何でも構いません。

範囲オブジェクトを参照する

範囲オブジェクトとは範囲が指定されているオブジェクトです。

range = 1..15

これが範囲オブジェクトです。1から15の範囲を指定しています。

これをeachメソッドを使って処理していきます。

range = 1..15


range.each do |a|
 puts a
end

実行結果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

1から15を簡単に参照することができました。

ハッシュの要素分繰り返す

eachメソッドはハッシュの要素についても繰り返し処理が可能です。

ハッシュの場合は以下のように書きます。

ハッシュ.each do |キー,値|
 くりかえし繰り返し処理
end

ではプログラムして動かしてみます。

今回はハッシュで定義したhashオブジェクトをキーと値で順番に取り出していきます。

hash = {"taro": 165, "jiro": 175, "ichiro": 166}

hash.each do |key,value|
  puts "#{key}, #{value}"
end

実行結果

taro,165
jiro,175
ichiro,166

このようにハッシュで定義されたオブジェクトも簡単に順番に処理することができます。

まとめ

今回はeachメソッドの基本的な3つの使い方をまとめてみました。eachメソッドは便利でよく使うメソッドなので理解しておきたいですね。eachメソッドはこの他にもいろんな繰り返し処理を実行できるので今後はそれもまとめたいと思います。

 

参考:【Ruby each】使い方の基礎を3つのパターンで解説

コメント