Ruby gets a lot from Perl - including its eclecticness in having a wide variety of alternative ways of doing similar things - and no more so than in loops and conditionals. Not only do you have an
if but also an
unless. Not only do you have a
while but also an
until. And not only can you write these as conditional blocks (with the conditional code after the condition) but also the other way round as conditional modifiers.
so if you don't like this:
if (n <= 4)
c = c + 3
end
try this:
c += 3 unless n > 4
Further examples
[here] and something similar in Perl
[here].
Is all this variety a good thing? If used with care, yes ... but if thrown about with gay abandon, leading to unmaintainable code, probably not ... which means that in both Ruby and Perl you really need to think about code quality and standards from day one. Or should I say from
before day one ...
(written 2010-07-28, updated 2010-07-30)
Associated topics are indexed under
P206 - Perl - More Loops and Conditionals [3398] Perl - making best use of the flexibility, but also using good coding standards - (2011-08-19)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[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)
[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)
[1825] Question Mark - Colon operator (Perl and PHP) - (2008-10-08)
[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)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[657] The ternary operator in Python - (2006-03-25)
[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)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[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
LAMP - Linux, Apache, MySQL, PHP - install, configure, administerGlobal Computer Maintenance DepartmentSorting people by their namesExclamation marks and question marks on ruby method namesAlternative loops and conditionals in Ruby and PerlWiltshire Council ask how they can help businessesDates and times in PythonShould Python classes each be in their own file?Recent PicturesSnow Leopard and Python (that is OS X 10.6 and wxPython)