Ruby

Rubyの array.map(&:to_s) 記法を紐解く

More than 3 years have passed since last update.


予備知識


  1. オブジェクトは&で修飾でき、 blockをprocに、 procをblockに 変換する。


  2. &はさらに、 procでないオブジェクトに対してto_procを呼んでからblockに変換する。


  3. Symbol#to_procは、引数を1つとり、そのsymbolをメソッドとして呼ぶprocを返す。

具体的には、:to_s.to_proc

Proc.new do |elem|

elem.send(:to_s)
end

を返す。


結論

array = [1,2,3]

array.map(&:to_s)
# => ["1", "2", "3"]

出典

http://www.reddit.com/r/ruby/comments/2ipgx6/help_understanding_mapjoin/