It has always struck me that
switch statements in languages like C, PHP, Tcl and Java are very longwinded and clumsy, with a need for blocks and blocks, and every case having to end with a break (or equivalent) to stop multiple cases being run via a drop-through. I can understand
why they were written that way in the first place but ... ouch.
Ruby's case / where, then, is a breath of fresh air. Easy block structure, multiple options allowed (and a special === test that helps make the case selection easy) and no need for those breaks either!
Larry Wall has steadfastly refused requests for a
switch in Perl as you don't need it and ... he agrees with me ... it's clumsy. But Perl 6
will have a
given alternative with
when clauses which works in a similar way to the superb Ruby solution. My hat off to Matz and Larry.
(written 2006-12-17)
Associated topics are indexed under
P256 - Perl 6 Look Ahead [3077] Perl 6 - significantly nearer, and Rakudo looks very good - (2010-12-02)
[2967] Multiway branches in Perl - the given and when syntax - (2010-09-22)
[2817] Setting a safety net or fallback value in Perl - (2010-06-19)
[2816] Intelligent Matching in Perl - (2010-06-18)
[2815] switch and case, or given and when in Perl - (2010-06-17)
[2559] Moving the product forward - ours, and MySQL, Perl, PHP and Python too - (2010-01-01)
[1721] Perl 6 - When will we have a production release? - (2008-07-26)
[1417] What software version do we teach? - (2007-10-31)
[1215] An update on Perl - where is it going? - (2007-06-03)
[582] DWIM and AWWO - (2006-01-30)
[550] 2006 - Making business a pleasure - (2006-01-01)
[113] A Parallel for Perl 6 - (2004-11-09)
[89] When will Perl 6 be available - (2004-10-15)
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)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[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)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[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)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[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)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
Some other Articles
Cascading and the busesThe year of the exploding projectorMost recent file in a directory - PHPSetting your colour theme through PHPRuby's case - no breakTraining on Cascading Style SheetsPositioning with Cascading Style SheetsEnthusiastic, but ....Adding a member to a Hash in RubyRuby - Totally Topical