灰いじり

This blog's posts are licensed under CC-BY 4.0.

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