在 Ruby 中,为什么别名 'method_missing' 不足以捕获对未定义方法的调用?



当定义一个虚拟方法时,传递所有参数来完成这项工作时,这似乎更加出乎意料。这是以下作品:

def method_missing(ago, *lokatoj, &bloko)
mistrafe(ago, *lokatoj, &bloko)
end
def mistrafe(ago, *lokatoj, &bloko)
# faru ion
end

虽然以下没有

alias mistrafe method_missing

为什么会这样?

一般来说,您希望method_missing(由 Ruby 内部调用(是mistrafe的别名,反之亦然。您在mistrafe中有一个实现,并且希望重新分配method_missing调用它。

也就是说,以下内容将起作用:

alias method_missing mistrafe

请参阅别名文档。

最新更新