0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

array.map(&:method)の【&:】の部分ってなに?

Posted at

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)

参考記事

Railsでよく見る arr.map(&:id) の意味
【Ruby】array.map(&:method)を理解する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?