Menu
Coddy logo textTech

each イテレータ

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

Rubyは、forwhileループを使用するよりも、配列をループ処理するためのよりエレガントな方法を提供します。eachイテレータは、コレクション内のすべての要素を処理するための、Rubyで推奨される方法です。

基本的な構文は次の通りです:

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

fruits.each do |fruit|
  puts fruit
end

これは各フルーツを別々の行に出力します。パイプ(|fruit|)の間の変数は、ブロック変数と呼ばれます。イテレータが配列内を移動する間、各要素を一時的に保持します。

1行のブロックでは、do...endの代わりに波括弧を使用できます:

numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }

each メソッドは、各要素に対して任意の操作を実行できるため強力です。以下は、累計を計算する例です:

prices = [10, 25, 15]
total = 0

prices.each do |price|
  total += price
end

puts total  # 出力: 50

for ループとは異なり、each 内のブロック変数はブロック内に収まったままになるため、コードがよりクリーンになり、予期しない動作が発生しにくくなります。

challenge icon

チャレンジ

簡単

カンマ区切りの整数を含む1行の入力を読み込みます(例:4,7,2,9,5)。

入力を整数の配列に分割し、each イテレータを使用して以下の処理を行ってください:

  1. 各数値を3倍した値を、それぞれ新しい行に出力する
  2. すべての数値の合計を計算し、ループの後にそれを出力する

ループの前に 0 で初期化した変数を使用し、配列を反復処理しながら合計を蓄積してください。

例えば、入力が 4,7,2,9,5 の場合、出力は以下のようになります:

12
21
6
27
15
Sum: 27

入力が 10,20,30 の場合、出力は以下のようになります:

30
60
90
Sum: 60

入力が 1,2,3,4 の場合、出力は以下のようになります:

3
6
9
12
Sum: 10

入力が 5 の場合、出力は以下のようになります:

15
Sum: 5

チートシート

each イテレータは、配列をループ処理するための Ruby で推奨される方法です:

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

fruits.each do |fruit|
  puts fruit
end

パイプで囲まれた変数 (|fruit|) は、各要素を一時的に保持するブロック変数です。

1行のブロックの場合は、波括弧を使用します:

numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }

合計の計算など、各要素に対して操作を実行できます:

prices = [10, 25, 15]
total = 0

prices.each do |price|
  total += price
end

puts total  # 出力: 50

自分で試してみよう

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

# 入力を整数の配列に分割する
numbers = input.split(",").map(&:to_i)

# 合計変数を初期化する
sum = 0

# TODO: 以下にコードを記述してください
# eachイテレータを使用して以下を行ってください:
# 1. 各数値を3倍して出力する
# 2. 各数値をsum変数に加算する

# 最終的な合計を出力する
puts "Sum: #{sum}"
quiz icon腕試し

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

基礎のすべてのレッスン