When you're in a loop there are occasions you want to say get me our of this loop NOW, or "I'm done with the current iteration. And those are the 'classic'
break and
continue statements from C, C++ and Java. Languages like Perl changed break to
last and continue to
next ... and added a
redo that asks for the current iteration to be rurun.
With me so far?
Now in Ruby ... you have
break, you have
next, you have
redo and you also have
retry ... which reenters the top of the loop. Wow - perhaps I had better provide an example?
for i in 1..5
print "How many do you need on day #{i}? "
nneed = gets.chomp.to_i
# next - don't order nothing; move on to next case
next if nneed == 0
# retry - whole thing to be redone on a 999 code
retry if [112,911,999].include?(nneed)
# redo - more than 10 ordered - must be a mistake
if nneed > 10 then print "Too many!\n"; redo; end
# break - code "-1" entered to exit on a short week
break if nneed == -1
print "We'll get #{nneed} on order for day #{i}\n"
end
By the way - if you've not seen much Ruby before, have a look through that example and taste a few of the constructs. It's really neat, and I expect I'll be writing a lot more about it in the future. ;-) . Source of this example
[here].
New technical articles on Ruby:
How classes are defined and used
Ruby's Control statements
String functions in Ruby
Ruby Regular Expressions
Modules, Mixins and Comparators (written 2006-12-03, updated 2011-01-29)
Associated topics are indexed under
C203 - C and C based languages - Conditionals and Loops [3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3384] Loops - a comparison of goto, while and for - (2011-08-10)
[3243] Breaking the running sequence - an introduction to conditional statements and loops - (2011-04-11)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3121] New year, new C Course - (2011-01-05)
[3004] Increment operators for counting - Perl, PHP, C and others - (2010-10-18)
[2570] Function Prototypes in C - (2010-01-11)
[2002] New C Examples - pointers, realloc, structs and more - (2009-01-20)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
[1191] Smart English Output - via PHP and Perl ? : operator - (2007-05-18)
[353] Wimbledon Neck - (2005-06-20)
H104 - PHP - Control Statements [2912] Predictions for the seagull population - (2010-08-09)
[2304] Extracting real data from an exported file in PHP or Perl - (2009-07-25)
[1825] Question Mark - Colon operator (Perl and PHP) - (2008-10-08)
[1477] Decisions - small ones, or big ones? - (2007-12-18)
[1199] Testing for one of a list of values. - (2007-05-22)
[863] Double and Triple equals operator in PHP - (2006-09-12)
[657] The ternary operator in Python - (2006-03-25)
[421] Don't repeat code - use loops or functions - (2005-08-21)
[406] Assignment, equality and identity in PHP - (2005-08-08)
[340] Code and code maintainance efficiency - (2005-06-08)
P206 - Perl - More Loops and Conditionals [3398] Perl - making best use of the flexibility, but also using good coding standards - (2011-08-19)
[2972] Some more advanced Perl examples from a recent course - (2010-09-27)
[2967] Multiway branches in Perl - the given and when syntax - (2010-09-22)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2832] Are you learning Perl? Some more examples for you! - (2010-06-27)
[2824] A pint of Black Rat, and a lazy barman - (2010-06-25)
[2817] Setting a safety net or fallback value in Perl - (2010-06-19)
[2815] switch and case, or given and when in Perl - (2010-06-17)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[299] What - no switch or case statement? - (2005-05-03)
[138] Perl - redo and last without a loop - (2004-12-02)
R104 - Ruby - Control Structures [3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2471] A short form of if ... then ... else - (2009-10-23)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[1891] Ruby to access web services - (2008-11-16)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[995] Ruby's case - no break - (2006-12-17)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
Some other Articles
CSL, KISS and RTFMKISS - one action per statement please - PerlPractical polymorphism in actionGeorge Hotel and Well House Manor, MelkshamBreaking a loop - Ruby and other languagesProducts that our customers want more ofIt's the 1st, not the 1nd 1rd or 1th.Plain Ole nice picturesImproving the historic town of Melksham