Rubyのイテレータ(Iterator)とは?繰り返し処理の基本をマスターしよう!
Rubyでは、配列やハッシュなどのコレクションを繰り返し処理する方法として、イテレータ(Iterator)が使われます。
特に each
メソッドは、Rubyにおける最も基本的な繰り返し処理の手段です。
イテレータとは?
イテレータとは、要素を1つずつ取り出して処理する仕組みのことです。
Rubyでは、コレクションに対してブロックを渡すことで、繰り返し処理を簡潔に書くことができます。
each の基本構文
[1, 2, 3].each do |n|
puts n
end
この例では、配列の各要素を順番に n
に代入して、ブロック内で処理を行っています。
出力は以下のようになります:
1
2
3
ハッシュでの each
hash = { apple: 100, banana: 200 }
hash.each do |key, value|
puts "#{key} は #{value}円"
end
ハッシュでは、キーと値をそれぞれブロック引数として受け取ることができます。
each_with_index
["A", "B", "C"].each_with_index do |val, i|
puts "#{i}: #{val}"
end
each_with_index
を使えば、インデックス番号付きで要素を取り出すことができます。
map(collect)
squares = [1, 2, 3].map do |n|
n * n
end
puts squares.inspect # → [1, 4, 9]
map
は各要素に処理を施し、新しい配列を返します(元の配列は変更されません)。
select / reject
nums = [1, 2, 3, 4, 5]
even = nums.select { |n| n.even? }
odd = nums.reject { |n| n.even? }
puts even.inspect # → [2, 4]
puts odd.inspect # → [1, 3, 5]
select
は条件に合う要素を抽出、reject
は条件に合わない要素を抽出します。
times / upto / downto
3.times { |i| puts "回数: #{i}" }
1.upto(3) { |n| puts n }
3.downto(1) { |n| puts n }
これらもイテレータの一種で、数値の繰り返し処理に便利です。
イテレータとブロックの関係
イテレータは、必ずブロックとセットで使います。
ブロックの中に「繰り返したい処理」を記述することで、明快かつ簡潔にコードを書くことができます。
まとめ
Rubyのイテレータ(Iterator)は、繰り返し処理を簡潔に書くための強力な機能です。
特に each
や map
、select
などは日常的によく使うメソッドです。
まずは配列やハッシュに対して each
を使ってみて、ブロックの動きと一緒にイテレータに慣れていきましょう!