From: Rich Date: 2005-12-06T01:15:02+09:00 Subject: Re: increasing counter whithin loop? Maybe I'm just being thick, but wouldn't it just be easier (and much closer to what you are actually trying to do) to say ["a", "b", "c", "d", "e"].each do |x| puts x unless x == "c" end I'll admit I'm also new to Ruby but isn't the above the more "rubyish" way to achieve what you're trying to do? On 12/5/05, Patrick Gundlach wrote: > Hi, > > a very basic question... > > I'd like to output the sequence "a b d e", by testing if the current > element is == "b" then skip the next element and continue the loop. The > obvious solution doesn't look rubyish to me, how could I use the first > or second attempt to get the desired solution? > > Patrick > -------------------------------------------------- > a=%w( a b c d e ) > > # incorrect, outputs "a b c d e" > 0.upto(a.size - 1) do |i| > puts a[i] > if a[i]=="b" > # skip next element > # but i won't get affected > i += 1 > end > end > > # incorrect, outputs "a b c d e" > for i in 0...a.size > puts a[i] > if a[i]=="b" > # skip next element > # but i won't get affected > i += 1 > end > end > > # incorrect, outputs nothing... is there a next_next ? > a.each do |elt| > puts elt > if elt=="b" > # skip next element > # ?? > end > end > > # this one works, but is ugly > i=0 > while i < a.size > puts a[i] > if a[i]=="b" > # skip next element > i += 1 > end > i += 1 > end > >