F#のパイプライン演算子が好きなので、Rubyでも似たことができたら良いなぁと思いやってみた。
pipeline.rb
module Pipeline
def pipe
if block_given?
yield self
else
self
end
Object.send(:include, Pipeline)
end
なんか同じメソッドが既にどこかにありそうだけど気にしない。
ブログで書いたのと同じやつ
test.rb
#1234を二乗して、文字列にして、順番逆にして、数字に戻す
1234.pipe {|i| i ** 2}.pipe(&:to_s).pipe(&:reverse).pipe(&:to_i)
#=> 6572251
こういう使い方はあんまり嬉しくない。
糊付けするとか?
hoge.rb
hoge.pipe {|i| f(hoge) }.pipe {|i| g(i) }
hoge.rb
"hoge".pipe(&["a", "b", "c"].method(:join))
#=> "ahogebhogec"
使いどころが分からない。