Putting things in an enum's scope
Mint via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Apr 10 14:55:25 PDT 2016
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)
{
// . . .
}
}
More information about the Digitalmars-d-learn
mailing list