On Sat, Jan 5, 2013 at 11:46 PM, Jan E. <[email protected]> wrote:

> And how is the low precendence of and/or "dangerous"? Isn't that exactly
> what you want in an "if" statement? To have the logical operators
> executed at the very end?

Jan, I am not totally sure what you mean by this.  In any case (&& or
and) the left expression is evaluated before the operator and operator
and boolean result of that left expression evaluation determine
whether the right hand expression is evaluated _at all_.

irb(main):001:0> def t(x)p x end
=> nil

irb(main):002:0> t(false) and t(nil)
false
=> false
irb(main):003:0> t(false) && t(nil)
false
=> false

irb(main):004:0> t(1) or t(2)
1
=> 1
irb(main):005:0> t(1) || t(2)
1
=> 1

irb(main):007:0> t(1) and t(false)
1
false
=> false
irb(main):008:0> t(1) && t(false)
1
false
=> false

irb(main):009:0> t(false) or t(2)
false
2
=> 2
irb(main):010:0> t(false) || t(2)
false
2
=> 2

Precedence only indirectly affects execution order by means of
grouping of expressions.

Kind regards

robert


-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

-- You received this message because you are subscribed to the Google Groups 
ruby-talk-google group. To post to this group, send email to 
[email protected]. To unsubscribe from this group, send email 
to [email protected]. For more options, visit this 
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en

Reply via email to