我想定义一个方法,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