重写method_missing时如何理解super?

时间:2013-03-25 03:41:44

标签: ruby

class MyClass
  def method_missing(id,*args,&block)
    return A if something
    return B if something_else
    super
  end
end

如果既没有返回A也没有返回B,则调用super,这将引发NoMethodError。我想这里的超级是MyClass的超类。但是,NoMethodError是如何引发的,因为在这里我们只是调用super而不调用缺少的方法?

1 个答案:

答案 0 :(得分:3)

你的假设是错误的。 super不是MyClass的超类。它是在MyClass的超类上调用具有相同名称的方法。