On Wednesday, 6 April 2016 at 13:59:42 UTC, pineapple wrote:
Is there any way in D to define static methods or members within an enum's scope, as one might do in Java? It can sometimes help with code organization. For example, this is something that coming from Java I'd have expected to be valid but isn't:

enum SomeEnum{
    NORTH, SOUTH, EAST, WEST;

    static int examplestaticmethod(in int x){
        return x + 2;
    }
}

int z = SomeEnum.examplestaticmethod(2);

You can't declare functions inside of an enum, however, you can emulate the behaviour using an anonymous enum inside of a struct or class.

ie.

struct SomeEnum
{
    enum : SomeEnum
    {
        NORTH = SomeEnum("North"),
        EAST  = SomeEnum("East"),
        SOUTH = SomeEnum("South"),
        WEST  = SomeEnum("West")
    }

    const string name;

    static SomeEnum getWithName(string name)
    {
        // . . .
    }
}

Reply via email to