mapメソッド
mapメソッド
は、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返す。
array = ["a", "b", "c"]
array = array.map {|item| item.upcase }
=> ["a", "b", "c"]
何をしているのか
array.map(&:メソッド名)
の型をし、配列の要素1つ1つに(&:メソッド名)
で与えられたメソッドを呼んでいる。
['a' ,'b'].map(&:upcase) #=> ["A", "B"]
&
はそのメソッドをブロックとして展開することを意味する。
この時、呼び出すオブジェクトは各要素として呼び出す。
例えばメソッドをid
とした場合、
・map(& )
はブロックmap{|x| }
に展開
・その中身は:id
のメソッド.id
array.map(&:id)
は以下と同義になる。
array.map{|x| x.id}
||
array.map(&:id)