[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Ten Things Every Java Programmer Should Know About Ruby

e

1/30/2005 4:20:00 PM

> 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



2 Answers

ts

1/30/2005 4:30:00 PM

0

>>>>> "E" == E S <eero.saynatkari@kolumbus.fi> writes:

E> Well, by default #method_missing causes a runtime error. If a
E> programmer overrides the default behaviour, they should only handle
^^^^^^^^^^^^^^^^^^^^^^^
E> the methods they need to and raise an error on everything else (which,
^^^^^^^^^^^^^^^^^^^^^^^
E> of course, may or may not be the case depending on the diligence of
E> said programmer).

plruby use #method_missing to emulate #autoload, because it run with
$SAFE = 12 and #autoload is not available in this case with ruby < 1.8

It dont know what is "the methods they need to" :-)

reality is sometimes a little more complex


Guy Decoux


dblack

1/31/2005 12:24:00 AM

0