Railsで見かけるmap(&:upcase)

February 11, 2015

答えは「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]


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter