On Friday, 8 April 2016 at 14:38:10 UTC, Andre wrote:
Therefore I use std.conv.text to convert the string enum? to string.

That converts the *name* of the enum to string, not the contents. (BTW, I think the name of the enum is actually the more useful behavior.)

Use cast(string) if you want to get the content out.


        assert( ":abc".startsWith(CharEnum.a)); // OK
        assert( ":abc".startsWith(ManifestConst)); // OK

makes sense

        //assert( "abc".startsWith(StringEnum.a)); // Compiler error

I feel like that should work... Phobos is just being too picky on its types.

If you do cast(string) StringEnum.a, it is all good though.

        assert( ":abc".startsWith(StringEnum.a.text)); // Assertion

StringEnum.a.text == "a" because .text (and to!string) returns the NAME of the enum, not its value. So ":" != "a" and it fails.

        assert( "bc".startsWith(StringEnum.b.text)); // OK ???
}

StringEnum.b.text == "b" because the name coincidentally matches the value so it passes.

Reply via email to