Ruby2.6アドベントカレンダーの12日目の記事です。
Method
Method#<<
, Method#>>
追加
https://bugs.ruby-lang.org/issues/6284
このメソッドオブジェクトと他のメソッドやProc等(#call
を持つオブジェクト)を続けて処理するようなProcオブジェクトを返します。
#<<
は、他のオブジェクトの戻り値を引数としてこのメソッドオブジェクトを実行します。
#>>
は、このメソッドオブジェクトの戻り値を引数として他のオブジェクトを実行します。
def hoge(s) s + 'abc' end fuga = ->(s) do s * 2 end (method(:hoge) << fuga).call('012') #=> "012012abc" (method(:hoge) >> fuga).call('012') #=> "012abc012abc"
Proc
Proc#<<
, Proc#>>
追加
https://bugs.ruby-lang.org/issues/6284
Method#<<
, Method#>>
の Proc 版です。
hoge = ->(s) do s + 'abc' end fuga = ->(s) do s * 2 end (hoge << fuga).call('012') #=> "012012abc" (hoge >> fuga).call('012') #=> "012abc012abc"