Magicode logo
Magicode
1 min read

mapとeach曖昧にしていた時期もありました

https://cdn.magicode.io/media/notebox/blob_c0sdS8V
Rubyにおいて、mapとeachは両方とも配列やハッシュなどのコレクションの要素を反復処理するために使用されますが、異なる役割を持っています。
eachメソッドは、要素を1つずつ反復処理するために使用されます。例えば、以下のように使用します。 ******************************** array = [1, 2, 3] array.each { |n| puts n } ********************************
上記のコードは、array配列の要素を1つずつ取り出して、それぞれに対してputsメソッドを呼び出しています。 ここまではちゃんと理解してたんですよねえ。だってerbファイル(view)でよく使いますもの。
んでmapのほうは
mapメソッドは、配列の各要素に対してブロックを実行し、ブロックの戻り値から新しい配列を生成します。例えば、以下のように使用するっぽいですね。 ******************************** array = [1, 2, 3] new_array = array.map { |n| n * 2 } puts new_array # => [2, 4, 6] ********************************
上記のコードは、array配列の各要素を2倍にして、新しい配列new_arrayを生成しています。mapメソッドは、元の配列を変更するのではなく、【新しい配列】を返します。
まとめると。。。。。
eachメソッドは要素を反復処理するだけで、何も変更なし。
mapメソッドは元の配列を変更せずに新しい配列を生成。

Discussion

コメントにはログインが必要です。