В чем смысл определения respond_to_missing?
в отличие от определения respond_to?
? Что не так, если вы переопределяете respond_to?
для некоторого класса?
`response_to?` против `response_to_missing?`
Ответ 1
Без respond_to_missing?
определено, пытаясь получить метод через method
не будет выполнено:
class Foo
def method_missing name, *args
p args
end
def respond_to? name, include_private = false
true
end
end
f = Foo.new
f.bar #=> []
f.respond_to? :bar #=> true
f.method :bar # NameError: undefined method `bar' for class `Foo'
class Foo
def respond_to? *args; super; end # "Reverting" previous redefinition
def respond_to_missing? *args
true
end
end
f.method :bar #=> #<Method: Foo#bar>
Marc-André (коммандер Ruby core) имеет хорошее сообщение в respond_to_missing?
.