前にこういう話をしました。
Symbol からレシーバを後挿しできる Proc を得られるようにするとブロックなし Ruby が捗る
p [[1,2,3],[2,4,6],[5,7,9]].map(&:select.(&:odd?))
こういうふうに書けるようになるやつは、たぶんこれを追加するともっと楽しいです。
class Symbol
def &(callable)
call(&callable)
end
end
p [[1,2,3],[2,4,6],[5,7,9]].map(&:select&:odd?)
たのしいですね。
受け取るのはブロックにすることが可能なものならなんでもいいので Proc
を渡してもよいです。たとえば任意のブロックを受け取るメソッドで
:instance_exec&proc
というイディオムを使うことで、後挿したレシーバのコンテキストで実行される Proc
を作ることができるようになります。いつ使うんだろう。
以上です。おわります。