2
我有很多的其方法的通用模式的子類:如何捕獲對super的引用並將其傳遞?
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
以便我可以在if_some_condition
的else
分支中調用它?
(暗示使用另一亞類中的之前,請注意some_condition
可以通過在該類對象的生存期經常改變)
編輯:
一種可能的解決方案是:
def if_some_condition(&b)
if some_condition
yield
else
b.send(:binding).eval('super')
end
end
但是,如果可能,我寧願避免使用eval
。