> Lähettäjä: "David A. Black" <dblack@wobblini.net>
> Aihe: Re: Ten Things Every Java Programmer Should Know About Ruby
>
> Hi --
>
> On Sun, 30 Jan 2005, E S wrote:
>
> > If method_missing handles 'foo', then the object responds to 'foo'.
>
> That's true in an informal sense, but it doesn't capture the practical
> relation between #respond_to? and #method_missing -- which is that
> #method_missing is what happens to messages that don't correspond to
> what the object #respond[s]_to? In other words, one can say that an
> object responds to every message, and that no method is truly missing,
> but that isn't the whole story of the #respond_to?/#method_missing
> mechanisms.
>
> I think it's better to think of it as: an object responds to a certain
> set of messages, and if it's sent a message it doesn't respond to,
> that's considered an exceptional condition which can be trapped either
> with a rescue clause or with the special #method_missing method.
Well, by default #method_missing causes a runtime error. If a
programmer overrides the default behaviour, they should only handle
the methods they need to and raise an error on everything else (which,
of course, may or may not be the case depending on the diligence of
said programmer). Conceptually, then, if an object doesn't raise an
error when invoking 'foo', it's responding to it. Reality tends to
get in the way, though, so your explanation is certainly better in
that respect :)
> David
E