Ruby で「配列の各要素をレシーバにしたメソッド呼び出し」と「配列の各要素を引数にしたメソッド呼び出し」を短く書く
前提
ruby-2.0.0-p353
「配列の各要素をレシーバにしたメソッド呼び出し」
(1..5).map {|i| i.to_s} # => ["1", "2", "3", "4", "5"]
↑は、↓のように書ける。
(1..5).map(&:to_s) # => ["1", "2", "3", "4", "5"]
Symbol#to_procが暗黙的に使われている。
「配列の各要素を引数にしたメソッド呼び出し」
(1..5).each {|i| puts i} 1 2 3 4 5 # => 1..5
↑は、↓のように書ける。
(1..5).each(&method(:puts)) 1 2 3 4 5 # => 1..5
Method#to_procが暗黙的に使われている。 to_proc されると、その Method オブジェクトに call 呼び出しをするような Proc オブジェクトになる。
例は単純すぎてこのままじゃ意味ないけど、遭遇した時わからなかったのでメモ。 で、気づいたけど下の例は短くなってないねw