From: Rick DeNatale Date: 2007-10-16T21:47:19+09:00 Subject: Re: nil.to_i returning zero On 10/15/07, hadley wickham wrote: > On 10/15/07, Rick DeNatale wrote: > > > > class NilClass > > > > def +(aNumber) > > aNumber > > end > > > > def -(aNumber) > > 0 - aNumber > > end > > > > alias_method :*, :to_i > > alias_method: :/, :to_i > > end > > > > which would allow sequences like: > > > > a ||= 0 > > a += 1 > > > > To be just > > a += 1 > > Why is addition so special? What about multiplication and division? Note that I did give implementations of NilClass#* and NilClass#/ which treat nil as 0. I just didn't give an example. > Really, you probably want nil to be the idempotent element for any > operation (ie. f(a, nil) = a). Don't think so, at least for - and /, if you want to go in that direction though I think that it should be: nil + x => x nil - x => -x nil * x => x nil / x => 1 / x On the other hand, this does seem inconsistent with nil.to_i being 0. > But can you implement that? Probably > not. For the 4 arithmetic operators certainly. -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/