Switch: Case Range Syntax

Vijay Nayar madric at gmail.com
Wed Aug 17 10:27:43 PDT 2011


D adds a very handy feature that allows you to check for a range of 
values in a single case.  Is there a particular reason that the syntax 
"case <start>:  .. case <end>:" is used instead of treating the case 
statement similarly to an array slice, e.g. "case <start> .. <end>:"?

For example:

import std.stdio;

void main() {
    int bob = 12;
    switch (bob) {
        // Why not "case 0 .. 9:"?
        case 0: .. case 9:
            writeln("Less than 10.");
        case 10: .. case 19:
            writeln("Less than 20.");
        case 20: .. case 29:
            writeln("Less than 30.");
            break;
        default:
            break;
    }
    // Output:  Less than 20.  Less than 30.
}

 - Vijay


More information about the Digitalmars-d mailing list