RubyのEnumerableモジュールの力:繰り返し処理をシンプルに
RubyのEnumerableモジュールは、コレクションを操作するための豊富なメソッドを提供します。繰り返し処理を簡潔に記述できるだけでなく、コードの可読性と効率性を向上させます。本記事では、主要なメソッドとその活用方法を詳しく解説します。
- 1. Enumerableモジュールとは
- 2. eachの基本と拡張性
- 3. mapでコレクションを変換する
- 4. selectで条件に合う要素を抽出する
- 5. rejectで条件に合わない要素を除外する
- 6. findで最初に見つかった要素を取得する
- 7. all?で全ての要素が条件を満たすか確認する
- 8. any?で少なくとも一つが条件を満たすか確認する
- 9. none?でどの要素も条件を満たさないか確認する
- 10. group_byで要素をグループ化する
- 11. partitionで条件に合う要素を分割する
- 12. reduceで要素を単一の値に畳み込む
- 13. each_with_indexで要素のインデックスを取得する
- 14. まとめ
Enumerableモジュールとは
Enumerableモジュールは、配列やハッシュなどのコレクションに共通の繰り返し処理メソッドを提供するモジュールです。ArrayやHashはこのモジュールをミックスインしています。
# Arrayクラスにミックスインされている例
puts [1, 2, 3].include?(2) # => trueeachの基本と拡張性
eachメソッドは、コレクションを繰り返し処理する基本的な方法です。他の多くのEnumerableメソッドも内部的にeachを利用しています。
[1, 2, 3].each { |n| puts n }mapでコレクションを変換する
mapメソッドは、各要素に対して処理を行い、その結果を新しい配列として返します。
squared = [1, 2, 3].map { |n| n ** 2 }
puts squared # => [1, 4, 9]selectで条件に合う要素を抽出する
selectメソッドは、ブロックの条件を満たす要素を抽出します。
evens = [1, 2, 3, 4].select { |n| n.even? }
puts evens # => [2, 4]rejectで条件に合わない要素を除外する
rejectメソッドは、selectの反対で、条件を満たさない要素を返します。
odds = [1, 2, 3, 4].reject { |n| n.even? }
puts odds # => [1, 3]findで最初に見つかった要素を取得する
findメソッドは、条件を満たす最初の要素を返します。
first_even = [1, 2, 3, 4].find { |n| n.even? }
puts first_even # => 2all?で全ての要素が条件を満たすか確認する
all?メソッドは、全ての要素がブロックの条件を満たすかどうかを確認します。
all_positive = [1, 2, 3].all? { |n| n > 0 }
puts all_positive # => trueany?で少なくとも一つが条件を満たすか確認する
any?メソッドは、少なくとも1つの要素が条件を満たすかを確認します。
has_even = [1, 3, 5].any? { |n| n.even? }
puts has_even # => falsenone?でどの要素も条件を満たさないか確認する
none?メソッドは、全ての要素が条件を満たさない場合にtrueを返します。
none_negative = [1, 2, 3].none? { |n| n < 0 }
puts none_negative # => truegroup_byで要素をグループ化する
group_byメソッドは、ブロックの結果をキーとして要素をグループ化します。
grouped = [1, 2, 3, 4].group_by { |n| n.even? }
puts grouped # => {false=>[1, 3], true=>[2, 4]}partitionで条件に合う要素を分割する
partitionメソッドは、条件を満たす要素と満たさない要素を分割します。
evens, odds = [1, 2, 3, 4].partition { |n| n.even? }
puts evens # => [2, 4]
puts odds # => [1, 3]reduceで要素を単一の値に畳み込む
reduceメソッド(別名inject)は、全ての要素を単一の値に畳み込みます。
sum = [1, 2, 3, 4].reduce(0) { |acc, n| acc + n }
puts sum # => 10each_with_indexで要素のインデックスを取得する
each_with_indexメソッドは、要素とそのインデックスを一緒に処理します。
["a", "b", "c"].each_with_index { |val, idx| puts "#{idx}: #{val}" }まとめ
Enumerableモジュールを活用することで、繰り返し処理の記述がシンプルになります。主要なメソッドを習得することで、効率的で可読性の高いRubyコードを実現できます。
-
前の記事
java パスから開始位置と終了位置を指定してパスの値を取得する 2025.02.17
-
次の記事
React Hooks徹底解説:useStateとuseEffectの使いこなし方 2025.02.17
コメントを書く