Getting enum from value
Matthew Remmel via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Aug 5 13:11:27 PDT 2017
On Saturday, 5 August 2017 at 18:26:10 UTC, Kreikey wrote:
> On Saturday, 5 August 2017 at 15:33:57 UTC, Matthew Remmel
> wrote:
>> I feel like I'm missing something, but there has to be an
>> easier way to convert a value into an enum than switching over
>> every possible value: i.e
>>
>> [...]
>
> Capitals c = cast(Capitals)"Chicago";
> writeln(c); // Illinois
I'm annoyed that I didn't think of trying to cast it. That works
great if the value exists in the enum. It does something weird if
the value doesn't though. This is my test.d file:
import std.stdio;
enum Foo {
A = "AV",
B = "BV"
}
void main() {
Foo k = cast(Foo)"BV"; // Works and prints correctly
k = cast(Foo)"CV";
writeln("Type: ", typeid(k)); // Type: test.Foo
writeln("Value: ", k); // Value: cast(Foo)CV
}
--------
The output shows the type being the Foo enum but the value is
'cast(Foo)CV'. I would of expected an error or exception to be
thrown if it wasn't able to cast into an actual enum member. Is
this something with how the enums are implemented under the hood?
More information about the Digitalmars-d-learn
mailing list