BartC <b...@freeuk.com>: > Yes, a few scripting languages can do interesting things with switch or > case statements. Perl for example (where I think it is created out other > language features, but it looks a regular part of the syntax). > > Even Ruby has one. It doesn't do anything 'sexy' with it, but it does > have this: > > case > when this > .... > when that > .... > when other > ... > end
That's a different topic. > which is exactly equivalent to if this... elif that... (when the tests > are ordered), with one difference: > > Each test starts with "when", instead of "if" for the first and "elif" > for subsequent ones. That makes it easier to reorder tests, temporarily > comment out the first test, copy a test from elsewhere, insert a new > first test (you get the idea). That is no different from a chained if/elif. Scheme has this: (case (* 2 3) ((2 3 5 7) 'prime) ((1 4 6 8 9) 'composite) (else 'unknown)) It has something better than C even: (case (die10) ((1 3 5 7 9) => (lambda (n) n)) (else => (lambda (n) (/ n 2)))) which maps 1, 3, 5, 7 and 9 onto themselves but halves 2, 4, 6, 8 and 10. As for a chained if/elif, Scheme as "cond:" (cond ((windy?) (fly-kite)) ((shining? sun) (go-out)) ((raining?) (play-soccer)) (else (read-book))) which also has a "=>" variant: (cond ((best-selling-book (this-year)) => (lambda (book) (read book))) (else (play wii pes08))) Marko PS What is a "scripting language?" -- https://mail.python.org/mailman/listinfo/python-list