RubyのEnumerableモジュールは、配列やハッシュ、範囲などの繰り返し可能なオブジェクトに便利なメソッド群を提供します。この記事では、Enumerableをクラスにインクルードするメリットを具体例とともに解説します。
Enumerableモジュールとは
Enumerableは、eachメソッドを実装したクラスに対して、map、select、reject、any?、all?、findなどの繰り返し処理用メソッドを自動的に提供するモジュールです。自分で全てのメソッドを定義する必要がなくなります。
インクルードするメリット
1. 繰り返し処理の簡略化: 自作クラスでeachメソッドだけ定義すれば、多くの便利な処理が使える。
2. 可読性の向上: mapやselectなどのメソッドでコードが簡潔になり、読みやすくなる。
3. コードの再利用性: Enumerableのメソッドは汎用的で多くのクラスで利用できる。
具体例
class DogCollection
include Enumerable
def initialize(dogs)
@dogs = dogs
end
def each
@dogs.each { |dog| yield dog }
end
end
dogs = DogCollection.new(["ポメラニアン", "柴犬", "ゴールデンレトリバー"])
dogs.map { |dog| dog.upcase } # ["ポメラニアン", "柴犬", "ゴールデンレトリバー"]
dogs.select { |dog| dog.include?('柴') } # ["柴犬"]
まとめ
Enumerableモジュールをインクルードすることで、eachメソッドを実装するだけで豊富な繰り返し処理メソッドを利用可能になり、コードの簡略化・可読性向上・再利用性が得られます。Rubyで自作コレクションを扱う際には非常に便利な手法です。


コメント