Ruby mapメソッドについて


はじめに

エンジニア1年生です。

日々の学びのメモとしてコツコツと記事を書こうと思っています。

今回はmapメソッドの使い方について書いていきます。


mapとは?

配列の要素の数だけ繰り返し処理を行うメソッドです。


mapメソッド

書き方は

配列の入った変数.map {|変数名| 処理内容 }

です。

mapは処理後に戻り値で配列を作成してくれます。

元の配列が上書きされることはありません。

例として配列の要素の文字数をmapメソッドで取得して変数に入れてみます。


controller.rb

  animal = ["dog", "cat", "koara","bird"]

animal.map {|a| a.length}

結果

  animalの中身は ["dog", "cat", "koara","bird"]

戻り値は [3, 3, 5, 4]

このようにmapは戻り値で配列を作成してくれます。


map!メソッド

配列の値を処理結果に置き換えたい場合に使用します。

map!は元の配列を戻り値に置き換えます。


controller.rb

  animal = ["dog", "cat", "koara","bird"]

animal.map! {|a| a.length}

結果

  animalの中身は [3, 3, 5, 4]

戻り値は [3, 3, 5, 4]

このようにmap!は配列の要素を処理の結果と入れ替えます。


eachとの違い

 戻り値が異なります。

 mapは配列を作成して返してくれるのに対して

 eachの戻り値はレシーバ自体が返ってきます。


controller.rb

  animal = ["dog", "cat", "koara","bird"]

animal.each {|a| a.length}

結果

  animalの中身は ["dog", "cat", "koara","bird"]

戻り値は ["dog", "cat", "koara","bird"]