enum editing

monarch_dodra monarchdodra at gmail.com
Wed Jun 12 02:13:19 PDT 2013


On Tuesday, 11 June 2013 at 19:52:01 UTC, Seany wrote:
> Hello
>
> i read here that enums, once initialized, are constants :
> http://ddili.org/ders/d.en/enum.html
>
> However, i need a method, if possible, to dynamically 
> (cexecution time) definition of enums, and updating them.
>
> anyidea how that can be done? using const and/or inout, and 
> passing an array / tuple to a function?

You could..., but it'd be nothing more than a glorified global 
struct.

Inside a module, I'd put this:

//----
private struct Enum
{
     static
     {
         public @property const
         {
             uint a(){return _a;}
             uint b(){return _b;}
             uint c(){return _c;}
         }

         private
         {
             uint _a = 0;
             uint _b = 1;
             uint _c = 2;
         }
     }
}

void changeState()
{
     Enum._a = 2;
     Enum._c = 0;
}
//----

Then you can use it...
void main()
{
     writeln(Enum.a);
     writeln(Enum.c);
     changeState();
     writeln(Enum.a);
     writeln(Enum.c);
}

But even then, keep i mind these aren't compile time objects, so 
you can't use them in a switch, for example...


More information about the Digitalmars-d mailing list