{category}

Ruby - イテレーションとEnumerator

each

イーチ(制御構造と繰り返し

意味 配列やハッシュの要素を順に処理


eachとは?

eachは、配列やハッシュなどの集合オブジェクトの各要素に対して、順番に処理を行うためのメソッドです。eachを使うと、コレクション内の各要素に対して同じ操作を簡単に適用できます。

eachの具体的な使い方

配列の要素を処理する例

fruits = ['apple', 'banana', 'orange', 'grape', 'melon']

puts "フルーツリスト:"
fruits.each_with_index do |fruit, index|
  puts "#{index + 1}. #{fruit.capitalize}"
end

total = fruits.length
puts "リストの合計: #{total}個のフルーツ"

👇出力結果

フルーツリスト:
1. Apple
2. Banana
3. Orange
4. Grape
5. Melon
リストの合計: 5個のフルーツ

この例では、fruits配列の各要素(フルーツの名前)に対して、インデックス付きでリスト形式で出力します。each_with_indexメソッドを使用して、要素とそのインデックスの両方を取得しています。また、capitalizeメソッドで各フルーツ名の先頭を大文字にしています。

ハッシュの要素を処理する例

student_scores = {
  Alice: 85,
  Bob: 92,
  Charlie: 78,
  David: 95,
  Eve: 88
}

puts "生徒の成績:"
student_scores.each do |name, score|
  grade = case score
    when 90..100 then 'A'
    when 80...90 then 'B'
    when 70...80 then 'C'
    else 'D'
  end
  
  puts "#{name}: #{score}点 (成績: #{grade})"
end

average = student_scores.values.sum / student_scores.length
puts "クラスの平均点: #{average.round(2)}点"

👇出力結果

生徒の成績:
Alice: 85点 (成績: B)
Bob: 92点 (成績: A)
Charlie: 78点 (成績: C)
David: 95点 (成績: A)
Eve: 88点 (成績: B)
クラスの平均点: 87.6点

この例では、student_scoresハッシュの各要素(生徒名と点数のペア)に対して、点数に応じた成績を計算し、生徒名、点数、成績を出力します。また、クラス全体の平均点も計算して表示します。

eachに関するよくある質問

Q. eachとforの違いは?
A. eachはメソッドで、ブロックを使用しますが、forは制御構造です。eachの方がRubyらしい書き方とされ、一般的に推奨されます。また、eachはスコープを作りますが、forは変数をスコープ外に漏らします。
Q. eachは値を返す?
A. eachは処理が終わると元のコレクション(配列やハッシュ)自体を返します。ブロック内の最後の式の結果は返しません。
Q. eachで要素を変更できる?
A. 配列の要素自体を変更することはできますが、イテレーション中に配列のサイズを変更するのは避けるべきです。要素の変更や追加が必要な場合は、map!やeach_with_indexなどの他のメソッドの使用を検討してください。

eachが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのeachやcycle、unless、when、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

cycle

要素を繰り返し処理

種類: イテレーションとEnumerator

unless

条件が偽の時に実行

種類: 条件分岐

when

case文の条件分岐

種類: 条件分岐

def

メソッドの定義を開始

種類: メソッド定義と呼び出し

p

オブジェクトの情報を出力

種類: 標準入出力