答えは「Rubyのmap(&:name)というのはどういう意味? - QA@IT」にあるんだけれど、自分の言葉で説明してみる。
Procオブジェクトを呼び指す際に&proc_objectという書き方ができる
[ruby] p = proc { |i| i.upcase } %w(bird lion camel).map(&p) [/ruby]
シンボルに対してto_procというメソッドを呼び出すとシンボルと同名のProcオブジェクトができる
[ruby] p = :upcase.to_proc [/ruby]
上記2つを組み合わせるとこうなる
[ruby] %w(bird lion camel).map(&:upcase.to_proc) [/ruby]
&を前置すると自動的にto_procが呼ばれるのでこう書ける
[ruby] %w(bird lion camel).map(&:upcase) [/ruby]