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


Rubyのeachメソッドで配列の要素を順番に取得したい
範囲オブジェクトの値を順番に取得したい

Rubyには便利なメソッドがたくさん用意されていますが、eachメソッドは配列やオブジェクトを要素分繰り返したいときに非常に便利なメソッドです。

ここでは、エンジニアとしてさまざまな言語を渡り歩いてきた著者がRubyのeachメソッドについて、基本的な使い方を3つのパターンに分けてご紹介します。Ruby初学者でも十分参考になると思いますのでぜひ参考にしてください。

この記事は以下の内容で解説します。

  • eachメソッドの概要
  • eachメソッドの基本的な使い方
  • eachメソッドで範囲オブジェクトを使用する方法
  • eachメソッドでハッシュの要素分繰り返す方法

eachの基本からさまざまなな使い方までわかりやすく解説していきます。

目次

Rubyのeachメソッドとは

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

eachメソッドの書き方:

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

または、doを省略した以下の記述でも可能です。

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

ブロック内に指定した変数は配列で取得するときの変数名を指定します。

配列についてよく理解していない方は以下の記事に詳しく解説していますので、合わせて参考にしてください。

Rubyのeachメソッド3つの基本的な使い方

ここではeachメソッドの使い方について解説します。

配列の要素分繰り返す

ここでは実際に簡単なプログラムを作成してeachメソッドの動作を確認してみましょう!

以下のサンプルプログラムでは、配列fruitsに対して要素を1つずつ取得して出力させています。

サンプルプログラム:

fruits = ["apple", "orange", "melon"]
 
fruits.each do |a|
    puts a
end

実行結果:

apple
orange
melon

このように配列の要素を1つずつ取得することができましたね!eachメソッドは「each do |変数|」で指定した変数に配列の要素を順番に格納されます。そのため、eachメソッドの繰り返し処理では格納された配列の要素の値を順番に参照することができます。

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

eachメソッドは範囲を指定して、指定した範囲分繰り返し処理を行うことも可能です。

範囲を指定するには範囲の最初と最後を、以下のように指定します。

変数 = 1..10

これで1から10までの値が取得されました。

では実際に範囲オブジェクトを指定してeachで繰り返し処理を実施してみましょう。

サンプルプログラム:

range = 1..10

range.each do |a|
    puts a
end

実行結果:

1
2
3
4
5
6
7
8
9
10

このように簡単に範囲を順番に取得することができましたね!

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

キーと値を定義できるHash(ハッシュ)クラスでもeachメソッドを使用することができます。ハッシュでeachメソッドを実行すると、キーと値を順番にブロックで指定した変数に代入されて繰り返し処理が実行されます。

書き方:

オブジェクト.each{ |キー, 値|
  繰り返し処理
}

以下のサンプルプログラムでは、ハッシュで定義したfruitsオブジェクトに対してeachメソッドを使用して、キーと値を順番に取り出しています。

サンプルプログラム:

fruits = {"apple":100, "orange":80, "melon":400}
 
fruits.each { |key, value|
   puts "#{key} => #{value}"
}

実行結果:

apple => 100
orange => 80
melon => 400

このようにeachを使用すれば、ハッシュの要素も簡単に取得できることがわかりますね!

eachメソッドのさまざまな使い方

eachメソッドには関連するメソッドも多く用意されています。

たとえば、


関連するメソッド

  • 配列を取得するときにインデックス番号も扱いたい場合はeach_with_index
  • 改行文字ごとに文字列を取得したい場合はeach_line
  • 配列の要素を指定した数値で切り分けたい場合はeach_slice
  • ブロックに値を渡して新たな配列を作成したい場合はeach_with_object

などの操作が可能です。

そんなeachメソッドのさまざまな操作方法については、以下の記事でまとめていますので、ぜひ参考にしてください。

Rubyについてもっと学びたい方へ


Rubyの使い方についてもっとよく知りたい
Rubyのスキルを身に着けられるか不安…
Rubyを体系的に理解したい

と感じている方は以下の記事も合わせてご覧ください。Rubyの基礎の基礎から勉強法などを体系的にまとめていますので、きっと参考になるのではと思います。

まとめ

ここではeachメソッドについて、概要から基本的な使い方についてわかりやすく解説しました。

eachメソッドは配列や範囲オブジェクト、ハッシュなどの要素に同じ処理を繰り返し実施したい場合に非常に便利ですので、使い方はしっかりと理解しておきましょう。もし、eachの使い方を忘れてしまったら、この記事を思い出してくださいね。

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次