Menu
Coddy logo textTech

インデックス付きの each

CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 66/88。

時には、操作している要素だけでなく、配列内でのその位置も知る必要がある場合があります。Rubyのeach_with_indexメソッドを使用すると、1回の反復で要素とそのインデックスの両方を取得できます。

仕組みは以下の通りです:

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

fruits.each_with_index do |fruit, index|
  puts "#{index}: #{fruit}"
end

次のように出力されます:

0: apple
1: banana
2: cherry

ブロックがパイプの間に2つの変数を受け取るようになったことに注目してください。最初に要素が、その次にインデックスが来ます。配列の要素に直接アクセスする場合と同様に、インデックスは0から始まります。

これは、番号付きリストを表示したり、位置を追跡したりする必要がある場合に特に便利です。

tasks = ["Buy groceries", "Clean room", "Call mom"]

tasks.each_with_index do |task, i|
  puts "Task #{i + 1}: #{task}"
end

インデックスに1を加えることで、0からではなく1から始まる、人間に分かりやすい番号付きリストを作成できます。each_with_indexメソッドを使用すると、カウンター変数を手動で追跡する必要がなくなり、コードがよりクリーンでエラーが発生しにくくなります。

challenge icon

チャレンジ

簡単

カンマで区切られた単語を含む1行の入力を読み取ります(例:apple,banana,cherry,date)。

入力を文字列の配列に分割し、each_with_index を使用して、0からではなく1から始まる番号付きリストとして各項目を出力してください。

各行は次の形式に従う必要があります:Item 1: apple

例えば、入力が apple,banana,cherry,date の場合、出力は次のようになります:

Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: date

入力が red,green,blue の場合、出力は次のようになります:

Item 1: red
Item 2: green
Item 3: blue

入力が monday,tuesday,wednesday,thursday,friday の場合、出力は次のようになります:

Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: friday

入力が solo の場合、出力は次のようになります:

Item 1: solo

チートシート

each_with_index メソッドを使用すると、要素とそのインデックスの両方にアクセスしながら配列を反復処理できます。

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

fruits.each_with_index do |fruit, index|
  puts "#{index}: #{fruit}"
end

出力:

0: apple
1: banana
2: cherry

ブロックは2つの変数を受け取ります。最初に要素、次にインデックスです。インデックスは0から始まります。

1から始まる人間にとって分かりやすい番号付きリストを作成するには、インデックスに1を加算します。

tasks = ["Buy groceries", "Clean room", "Call mom"]

tasks.each_with_index do |task, i|
  puts "Task #{i + 1}: #{task}"
end

自分で試してみよう

# カンマ区切りの入力を読み込む
input = gets.chomp

# 入力を配列に分割する
items = input.split(",")

# TODO: each_with_index を使用して、各項目を番号付きリストとして表示する
# 注意:インデックスは0から始まりますが、1から始まるように表示する必要があります
# フォーマット: "Item 1: apple"
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン