From: Robert Klemme Date: 2007-09-07T06:20:06+09:00 Subject: Re: Is this a bug or a feature? On 06.09.2007 21:00, Martin Jansson wrote: > irb(main):002:0> i=1 > => 1 > irb(main):003:0> until (i+=1)>5 > irb(main):004:1> p i > irb(main):005:1> end > 2 > 3 > 4 > 5 > => nil > irb(main):006:0> RUBY_VERSION > => "1.8.3" > > The condition is evaluated before the first iteration. > > At least it's consistent: > > irb(main):005:0> i = 1 > => 1 > irb(main):006:0> p i until (i+=1)>5 > 2 > 3 > 4 > 5 > => nil > > I think it makes "until" less useful. Why would anyone want this? def print_all(arr) until arr.empty? print ">", arr.shift, "<\n" end end Try this with post checked conditions and an empty array as argument. Language designers seem to think otherwise. You described the logic of loops with prechecked conditions which abound in programming languages - for decades already. Kind regards robert