%w(Ganbaru Watashi Kakkoii).map(&:upcase) #=> ['GANBARU', 'WATASHI', 'KAKKOII']といった、ブロック引数の代わりに&:upcaseを引数に設定するイディオムというのはRubyでよく使われる訳ですが、なぜこれで動くのか?と問われると、スッキリ説明できる人は少ないかも知れません。 手続きオブジェクトを引数として渡すために「&」をつける Rubyのドキュメントを読みながら理解を進めましょう。ブロック付きメソッド呼び出しという文章でこの仕様について触れられています。 まず、これが普通にブロック引数を渡したときの例です。 %w(Ganbaru Watashi Kakkoii).map {|str| str.upcase } #=> ['GANBARU', 'WATASHI', 'KAKKOII'] ブロック引数を求めるような
![なぜRubyでブロック付き引数を持つメソッドの引数として&:upcaseみたいな値を渡せるのか | mah365](https://cdn-ak-scissors.b.st-hatena.com/image/square/ea7c64f0a114b02fe65566065416828a50dbbee9/height=288;version=1;width=512/https%3A%2F%2Fblog.mah-lab.com%2Fwp-content%2Fuploads%2F2014%2F05%2F20140519.jpg)