From: brabuhr@... Date: 2010-09-29T05:56:31+09:00 Subject: Re: puts and return On Tue, Sep 28, 2010 at 4:03 PM, Jim Haungs wrote: > 10.times do |i| >  puts 'too big' and break if i > 5 >  puts "#{i} ok" > end > > I would expect this loop to quit after printing 0 to 5, but it executes > all 10 times. I know "puts" return nil, but isn't "and" (as opposed to > &&) supposed to execute both sides of the expression even if one side > evaluates to false? One option appears to be: 10.times do |i| puts 'too big' and break if i > 5 puts "#{i} ok" end 10.times do |i| (puts 'too big'; break) if i > 5 puts "#{i} ok" end puts "done" 0 ok 1 ok 2 ok 3 ok 4 ok 5 ok too big 6 ok too big 7 ok too big 8 ok too big 9 ok 0 ok 1 ok 2 ok 3 ok 4 ok 5 ok too big done