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" #t