module A
def foo
if super.respond_to? :foo
puts 'super responded to :foo'
end
end
end
class Lab
include A
end
puts Lab.ancestors.inspect #=> Lab, A, Object, Kernel, BasicObject]
Lab.new.foo
foo': super: no superclass method
foo' for # (NoMethodError)
我假设在这种情况下,对 super 的调用会先到Object
然后再到BasicObject
,最后会返回 false。
为什么我得到no superclass method foo
?
我正在使用 ruby 1.9.3 。