Railsで見かけるmap(&:upcase)答えは「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]

カテゴリー: Code

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください