useo Wrote:
> Hi,
>
> does anyone know how I can cast a string to an enum which also
> contains strings? For example:
>
> enum MyENUM : string {
>
> x = "123"
> y = "456"
> z = "789"
>
> }
>
> ...
>
> string myString = X;
> to!(MyENUM)(myString); // Error: cannot implicitly convert
> expression (_adDupT((& D12TypeInfo_Aya6__initZ),s)) of char[]...
> cast(MyENUM) myString; // Does work, but it seems that other values
> like MyENUM.a, MyENUM.b... are also successfully casted to MyENUM but
> MyENUM doesn't contain a, b or similiar invalid/undefined values.
>
> I hope anyone can solve the problem... thanks.
You should get a compiler error for using MyENUM.b if it doesn't exist.
Casting is the correct way to do conversion, but as you are aware this doesn't
guarantee that it is within the Enum.
You can use a switch statement and throw an exception in the default.
I am looking at ways to improve to! such that it can do more and is safer than
cast. After the new year I'll probably have more time to look at building my
proposed changes and I think this is a good one to add to the list.