--927295978-1312872662-11071310209793
Content-Type: MULTIPART/MIXED; BOUNDARY="927295978-1312872662-1107131020=:29793"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--927295978-1312872662-11071310209793
Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; format=flowed
Content-Transfer-Encoding: QUOTED-PRINTABLE

Hi --

On Mon, 31 Jan 2005, E S wrote:

>> LçÉettçË "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 :)

I'm making a distinction between an object's responding to 'foo'
(which, as you say, it does if it doesn't raise a method missing
error), and the methods that an object tells you it responds to with
#respond_to?  I don't think I put it very clearly in my second
paragraph.  It might be more like:  an object will tell you what
methods it knows itself to respond to, and if it's sent a different
message, that's considered an exceptional condition... and if it's
caught with #method_missing, it will be a response (even though the
object didn't know that it could respond to that message).

Or something :-)


David

-- 
David A. Black
dblack / wobblini.net
--927295978-1312872662-11071310209793--
--927295978-1312872662-11071310209793--