Object
ブロックを受け取り、レシーバーをブロックに適用するメソッドを定義したいと考えています。実装は次のようになります。
class Object
def apply ≺ pr.call(self) end
end
2.apply{|x| x * 3} # => 6
これを行うための標準的な方法や、同様の使用方法を持つよく知られたライブラリは既にありますか? もしそうなら、私は車輪を再発明したくありませんでした.
オプションのブロックを受け取るメソッドがあり、ブロックがない場合return_value
はメソッド内で計算されたものを返したいのですが、ブロックがある場合はの戻り値を返したいということがよくあります。ブロックにreturn_value
適用されます。今のところ、次のような行がたくさんあります。
def method ..., &pr
...
pr ? pr.call(return_value) : return_value
end
しかし、私は一貫して書きたい
def method ..., &pr
...
pr ? return_value.apply(&pr) : return_value
end
またはさらに良いことに、 の定義をわずかに変更するとapply
、
def method ..., &pr
...
return_value.apply(&pr)
end