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)
{
// . . .
}
}