I want to have a method defined on Object
that takes a block and applies the receiver to the block. An implementation will be like the following:
class Object
def apply ≺ pr.call(self) end
end
2.apply{|x| x * 3} # => 6
Is there already a standard way to do this or a well known library that has a method with similar use? If so, I didn't want to reinvent the wheel.
It happens to me very often that, I have a method that takes an optional block, and when there is no block, I want to return some return_value
calculated within the method, but when there is a block, I want to return the return value of the return_value
applied to the block. For now, I have bunches of lines like:
def method ..., &pr
...
pr ? pr.call(return_value) : return_value
end
but I want to consistently write
def method ..., &pr
...
pr ? return_value.apply(&pr) : return_value
end
or even better, with a slightly modified definition of apply
,
def method ..., &pr
...
return_value.apply(&pr)
end
f = ->(x) { x * 3 }; six = f[2]
– Iseabaldef apply; yield self; end
? – Nadeanself
as the receiver. – Gonion