Thread overview
Phobos func for string -> enum member?
Oct 13, 2016
Nick Sabalausky
Oct 13, 2016
H. S. Teoh
Oct 14, 2016
Nick Sabalausky
Oct 13, 2016
Ali Çehreli
October 13, 2016
I'm sure it'd be easy enough to write, but does phobos have a simple way to convert the name of an enum member from a runtime string to the enum type?

Ie, something like:

enum Foobar { foo=1, bar }
Foobar a = doesThisExistInPhobos!Foobar("foo");

I'm not finding anything like it in the docs, but I'm wondering if I just missed it somewhere.
October 13, 2016
On Thu, Oct 13, 2016 at 07:11:15PM -0400, Nick Sabalausky via Digitalmars-d-learn wrote:
> I'm sure it'd be easy enough to write, but does phobos have a simple way to convert the name of an enum member from a runtime string to the enum type?
> 
> Ie, something like:
> 
> enum Foobar { foo=1, bar }
> Foobar a = doesThisExistInPhobos!Foobar("foo");
> 
> I'm not finding anything like it in the docs, but I'm wondering if I just missed it somewhere.

	import std.conv : to;
	Foobar a = "foo".to!Foobar;

:-)


T

-- 
It is impossible to make anything foolproof because fools are so ingenious. -- Sammy
October 13, 2016
On 10/13/2016 04:11 PM, Nick Sabalausky wrote:
> I'm sure it'd be easy enough to write, but does phobos have a simple way
> to convert the name of an enum member from a runtime string to the enum
> type?
>
> Ie, something like:
>
> enum Foobar { foo=1, bar }
> Foobar a = doesThisExistInPhobos!Foobar("foo");
>
> I'm not finding anything like it in the docs, but I'm wondering if I
> just missed it somewhere.

import std.conv;

enum Foobar { foo=1, bar }
void main() {
    assert("foo".to!Foobar == Foobar.foo);
}

Ali

October 13, 2016
On 10/13/2016 07:14 PM, H. S. Teoh via Digitalmars-d-learn wrote:
> On Thu, Oct 13, 2016 at 07:11:15PM -0400, Nick Sabalausky via Digitalmars-d-learn wrote:
>> I'm sure it'd be easy enough to write, but does phobos have a simple
>> way to convert the name of an enum member from a runtime string to the
>> enum type?
>>
>> Ie, something like:
>>
>> enum Foobar { foo=1, bar }
>> Foobar a = doesThisExistInPhobos!Foobar("foo");
>>
>> I'm not finding anything like it in the docs, but I'm wondering if I
>> just missed it somewhere.
>
> 	import std.conv : to;
> 	Foobar a = "foo".to!Foobar;
>
> :-)
>
>
> T
>

Ah. Right. ;)

Thanks all.