{category}

Ruby - イテレーションとEnumerator

each_with_index

イーチ・ウィズ・インデックス(制御構造と繰り返し

意味 要素と位置を同時に扱う


each_with_indexとは?

each_with_indexは、配列やハッシュの各要素とその位置(インデックス)を同時に処理するメソッドです。要素と位置の両方が必要な場合に便利です。

each_with_indexの具体的な使い方

配列の要素とインデックスを同時に処理

fruits = ['apple', 'banana', 'cherry']

fruits.each_with_index do |fruit, index|
  puts "#{index + 1}番目の果物: #{fruit}"
end

# 配列の要素を大文字に変換し、インデックスを使って新しい配列を作成
upcased_fruits = []
fruits.each_with_index do |fruit, index|
  upcased_fruits[index] = fruit.upcase
end

puts "大文字に変換した果物: #{upcased_fruits.inspect}"

👇出力結果

1番目の果物: apple
2番目の果物: banana
3番目の果物: cherry
大文字に変換した果物: ["APPLE", "BANANA", "CHERRY"]

この例では、fruits配列の各要素とそのインデックスを使って、要素を順番付きで出力しています。また、each_with_indexを使って配列の要素を大文字に変換し、新しい配列を作成する方法も示しています。

ハッシュの要素とインデックスを同時に処理

scores = { Alice: 90, Bob: 85, Charlie: 95 }

scores.each_with_index do |(name, score), index|
  puts "#{index + 1}位: #{name}さん (#{score}点)"
end

# ハッシュの値を10%増加させ、新しいハッシュを作成
updated_scores = {}
scores.each_with_index do |(name, score), index|
  updated_scores[name] = (score * 1.1).round
end

puts "更新後のスコア: #{updated_scores}"

👇出力結果

1位: Aliceさん (90点)
2位: Bobさん (85点)
3位: Charlieさん (95点)
更新後のスコア: {:Alice=>99, :Bob=>94, :Charlie=>105}

この例では、scoresハッシュの各要素(キーと値のペア)とそのインデックスを使って、順位付きで出力しています。また、each_with_indexを使ってハッシュの値を10%増加させ、新しいハッシュを作成する方法も示しています。

each_with_indexに関するよくある質問

Q. インデックスは何から始まる?
A. each_with_indexメソッドのインデックスは0から始まります。
Q. 戻り値は何?
A. each_with_indexメソッドは、処理が終わると元のコレクション(配列やハッシュ)自体を返します。
Q. ハッシュの場合の要素の順序は?
A. Ruby 1.9以降では、ハッシュの要素は追加された順序で処理されます。それ以前のバージョンでは順序が保証されません。

each_with_indexが学べる書籍の紹介

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

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

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」カテゴリーが追加されましました!


関連するそのほかの単語

one?

条件を満たす要素がちょうど1つか確認

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

case

複数の条件分岐

種類: 条件分岐

while

条件が真の間繰り返す

種類: ループ

cover?

値が範囲内かを判定

種類: Range操作

Range

値の範囲を表す

種類: 範囲表現