【ruby】mapの使い方

mapメソッドは配列の各要素に対してブロックを評価した結果を新しい配列にして返します。 もしブロックの戻り値がない場合はnilになります。

map メソッドの記述方法は以下の通りです。

オブジェクト.map { |変数|
  # 実行したい処理
}


例として、配列の要素を2倍にした新しい配列を作る場合は、下記の通りになります。

numbers = [10, 20, 30, 40]

new_numbers= numbers.map { |n| n * 2 }

p new_numbers

# 実行結果
[20, 40, 60, 80]


なお、上の例ではmapメソッドの処理を{}で囲んでいますが、do end で囲んでも同じです。

numbers = [10, 20, 30, 40]

new_numbers= numbers.map do |n| n * 2  end

p new_numbers

# 実行結果
[20, 40, 60, 80]



map!メソッド

配列の値を処理結果に置き換えたい場合に使用します。
mapメソッドは元の値を変更しないのに対して、map!メソッドは元の値を書き換えます。

animals = ["dog", "cat", "bird"]
animals.map! {|a| a.length}
p animals

# 実行結果
[3, 3, 4]