switch with enum

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Nov 24 19:59:00 PST 2015


On 11/24/15 10:51 PM, tcak wrote:
> I have seen a code a while ago, but even by looking at documentation, I
> couldn't have found anything about it.
>
> Let's say I have defined an enum;
>
> enum Status: ubyte{
>   Busy = 1,
>   Active = 2
> }
>
> and received a ubyte value from user.
>
> ubyte userValue;
>
> I want to switch over userValue, but that should depend on Status.
>
> switch( userValue ){
> ....
> }
>
> What I mean is that compiler should enforce values of enum "Status" to
> be declared in switch as it would be done with "final switch", but as
> you can guess, user might enter a value that is not defined by Status.
> Thus, I should be able to enter the case "default" as well.

All final switch does is ensure you are covering all possible enums. It 
assumes that the value is already a valid enum value. If you did final 
switch on userValue, it would require you handle all 256 possible values 
for ubyte. So you would have to cast first.

>
> I remember it something like switch( userValue ) with( Status ){...},
> but not sure about it. Maybe it was D1 code. Is there anything like this
> currently?

What this does (and yes, it should work) is make it so you don't have to 
type "Status.Busy" within your case statements. You can just type 
"Busy". That's all.

-Steve


More information about the Digitalmars-d-learn mailing list