Wouldn't it be nice (case range statements)

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Tue Oct 14 14:59:46 PDT 2014


On 10/14/14, 2:29 PM, John Colvin wrote:
> if code like this worked: http://dpaste.dzfl.pl/7ea4eb03f02e
>
> A few reasons why it doesn't:
>
> You have to duplicate the case keyword when declaring case ranges. Why?
>
> Case ranges are inclusive at both ends of the range, unlike in foreach.
> Again, why?
>
> exponential notation (e.g. `2e9`) returns a double, not a long.
>
>
> The exponential notation isn't really a problem, declaring some enums
> `enum i2e9 = cast(long)2e9;` deals with it fine. The case ranges are a
> wart though.
>
> Solution:
>
> Allow the second `case` keyword to be removed, which would then have the
> same semantics as the range in foreach.
>
> E.g.
> case 0 .. 4: // matches 0,1,2,3
> case 0: .. case 4: // matches 0,1,2,3,4
>
> No breakage, greater consistency, neater code, good stuff. At least as
> good as pascal.
>
> Even better, the .. operator would become general (overloadable, too)
> and the case range would just be a special case of it.

The short answer is it's all good as it is. -- Andrei


More information about the Digitalmars-d mailing list