def a_method p "in distress" end alias :hero :a_method def a_method hero p "Saved by the hero" end
这是一个遇险的方法,它已被英雄保存。但其他人不喜欢故事的结局,并决定覆盖英雄所做的事情。
alias :nemesis ? def ? #which method to call? p "Captured by the nemesis" end
对手是否有可能覆盖英雄所做的事情并且最终结果是
"in distress" "Captured by the nemesis"
答案 0 :(得分:0)
看起来这样可以在没有任何混叠的情况下工作:
def a_method
hero
p "Captured by the nemesis"
end
然而,在英雄出现之前,没有任何方法可以让克星“unalias”并确定:a_method的旧值。事实上,Ruby不会保留这样的历史记录,因此首先需要在这种覆盖情况下使用别名。