['a', 'b', 'c'].map(&:freeze) の&+識別子とは何か
ブロック付きのメソッドを呼び出す際、ブロックの代わりに Proc オブジェクトを
渡すことが可能。
「&」は Symbol#to_proc というメソッドを呼び出す。
これはレシーバに対してシンボルと同名のメソッドを呼び出す Proc オブジェクトを
返すメソッド。
以下の2つは等価になる。
:upcase.to_proc
&:upcase
よって以下の例はmapメソッドに、各要素がfreezeメソッドを呼び出すブロックを 渡しているのと同じということになる。
['a', 'b', 'c'].map(&:freeze)