Я хочу иметь метод, определенный в 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