rubykaigiの永和さんのセッション中にチラッと紹介されてたtapp。
require 'pp' class Object def tapp tap { pp block_given? ? yield(self) : self } end def taputs tap { puts block_given? ? yield(self) : self } end end
セッションでは、よくわかんなかったんだけど
ソースを見ると、納得。なるほどなぁ。
ちょっとしたデバッグに便利そう。
>> (1..5).select(&:odd?).map(&:succ).join => "246" #tappを使うと >> (1..5).tapp.select(&:odd?).tapp.map(&:succ).tapp.join 1..5 [1, 3, 5] [2, 4, 6] => "246" #taputsもあるよ >> (1..5).tapp.select(&:odd?).tapp.map(&:succ).taputs.join 1..5 [1, 3, 5] 2 4 6