On Jan 24, 2007, at 10:52 AM, ara.t.howard / noaa.gov wrote:

> On Thu, 25 Jan 2007, John Kopanas wrote:
>
>> I have the following:
>>
>> a = (y != 0) ? (x/y) : 0
>>
>> There must be a sexier way of doing this!  Any suggestions?
>>
>> On a side note... how do we do exception handling on the same line  
>> as statement?
>>
>> a = x/y rescue 0
>>
>> That does not work but does it make sense?  Is it because dividing by
>> zero does not throw an exception?
>>
>> Thanks for your help! :-)
>>
>
> works for me?
>
>   harp:~ > ruby -e'  a = 42/0 rescue 42;  p a  '
>   42
>
> i think you're doing the right thing with
>
>> a = x/y rescue 0
>
> how doesn't it work?
>
> regards.
>
> -a
> -- 
> we can deny everything, except that we have the possibility of  
> being better.
> simply reflect on that.
> - the dalai lama

If you're not limited to Integers:

 >> 1/0
ZeroDivisionError: divided by 0
         from (irb):1:in `/'
         from (irb):1
 >> 1.0/0
=> Infinity
 >> 1/0.0
=> Infinity
 >> 0.0/0.0
=> NaN
 >>

If either x or y are Float, then dividing by zero isn't an exception.

You could force an exception if you want to get back to an Integer:

 >> (1.0/0).to_i
FloatDomainError: Infinity
         from (irb):7:in `to_i'
         from (irb):7
 >> (0.0/0.0).to_i
FloatDomainError: NaN
         from (irb):8:in `to_i'
         from (irb):8

-Rob

Rob Biedenharn		http://agileconsultingllc.com
Rob / AgileConsultingLLC.com