First of all, it is not my web mail client to blame (it has lots of its own=
 faults) -- if your e-mail were not present in the original message no clie=
nt would be able to expose it in reply anyway ;-).

As had been mentioned many times on this list (in one form or another), res=
pond_to? is a lame duck of the duck typing world ;-). It only can indicate =
that an object has a method in its inheritance chain to invoke in response =
to a named message. I has no idea -- and can't have any, really -- what tha=
t method would do for you and even how to properly invoke it.=20

Getting back to dup(), this method is defined for Object class, so every Ru=
by object, including Fixnum instances, will inherit it. On the other hand, =
there's nothing to dup() for Fixnum -- hence method redefinition to raise a=
 TypeError. =20

Gennady.
________________________________________
From: sentinel.2001 / gmx.com [sentinel.2001 / gmx.com]
Sent: Monday, January 12, 2009 23:43
To: ruby-talk ML
Subject: Re: 99.respond_to? :dup   =3D=3D> true

Gennady Bystritsky wrote:
> 2 points here (and sorry for the top posting -- my web mail client does
> not quote properly):
>
> 1. It may be the case that if an object is not dup()-able, you better
> not quietly continue with an original object as modifying it may cause
> undesired side effects. In this case, an exception from calling dup(),
> either NoMethodError or TypeError (can't dup Fixnum),  is a valid reason
> to report a datatype error.
>
> 2. Instead of dup()-ing, you may consider using a proxy class that will
> delegate to the original object, yet keeping track of all modifications.
> It will work even for data types that do not support dup().
>
> Best,
> Gennady.
> ________________________________________

Ouch! Your web client has exposed my email id to the spammers :-(
Anyway,.... no, here i do not want the original value touched since the
user may press Escape and abandon editing.

In the case of numbers and floats, usually its a call by value so a copy
is made anyway.

Anyway, as a newbie, it was quite a surprise - i've relied on
respond_to? to take care of a lot of generic code.

thx.
--
Posted via http://www.ruby-forum.com/.