#はじめに
エンジニア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"]