У меня есть подкласс с общим рисунком во многих из его методов:Как мне получить ссылку на супер и передать ее?
if some_condition
(real code goes here)
else
super
end
В идеале я хотел бы, чтобы инкапсулировать его в чем-то вроде:
def if_some_condition
if some_condition
yield
else
(calling method's super)
end
end
Есть ли способ захватить метод вызывающего super
, так что я могу назвать это в филиале else
if_some_condition
?
(. Прежде чем предложить использование другого подкласса, обратите внимание, что some_condition
может часто меняться в течение всего срока службы объектов в этом классе)
EDIT:
Возможное решение:
def if_some_condition(&b)
if some_condition
yield
else
b.send(:binding).eval('super')
end
end
Я предпочел бы избежать использования eval
, если возможно.