On Wednesday, 25 November 2015 at 03:51:48 UTC, 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.

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?

One way you could do it:

import std.conv: to;

try
{
    switch (userValue.to!Status)
    {
        ...
    }
}
catch (ConvException c)
{
    //Default case
}

Reply via email to