On 2/16/2014 7:42 AM, Manu wrote:
1. case fall-through is not supported; explicit 'goto case n;' is required.
With this in mind, 'break' is unnecessary. Why is it required?

It's that way to prevent confusion from people used to C/C++, and/or transliterating code from such to D.


2. 'case 1, 3, 7, 8:' is awesome! ...but ranged cases have a totally different
syntax: 'case 1: .. case 3:'

Why settle on that syntax? The inconsistency looks kinda silly when they appear
together in code.
Surely it's possible to find a syntax that works without repeating case and ':'?

Many syntaxes were proposed for that, and this was the best one.


I'm not sure it's reasonable to use the '..' syntax in this case for that
reason. '..' is an [) range, case ranges must be [] so that it makes sense when
dealing with enum key ranges.

That was the known problem with using a..b


3. Why is 'default' necessary? If I'm not switching on an enumerated type, then
many values are meaningless. requiring an empty 'default: break;' line at the
end is annoying and noisy.

It originally was not required, but there was a campaign by a lot of D users to make it required to deal with the common bug of adding a value in one switch statement but forgetting to add it to another corresponding one.


if not for these strange decisions (purely for legacy compliance?).

I hope you'll find them less strange now.

Reply via email to