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 10:13:10)
Associated topics are indexed under
P256 - Perl 6 Look Ahead [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 [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