On Tuesday, 14 October 2014 at 21:29:59 UTC, John Colvin wrote:
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?

It comes from writing:

switch(foo) {
  case 1:
  case 2:
  case 3:
  case 4:
     // code
}

Then just replacing the case 2 and case 3 with .. collapsing the repetition to just the beginning and the end. If you write it as:

switch(foo) {
  case 1:
  ..
  case 4:
     // code
}

vertically, that is, I think the rationale becomes a lot more clear. I like this a lot, it works brilliantly for me and makes good sense.

Allow the second `case` keyword to be removed, which would then have the same semantics as the range in foreach.

That would be ok too.

Reply via email to