enums
monarch_dodra via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri May 30 08:41:18 PDT 2014
On Friday, 30 May 2014 at 15:30:15 UTC, Russel Winder via
Digitalmars-d-learn wrote:
> I think I have no idea what D enums are about.
>
> Bearophile's example of some code in an email on another thread
> uses:
>
> enum double p0 = 0.0045;
>
> Now I would have written:
>
> immutable double p0 = 0.0045;
>
> or at the very worst:
>
> const double p0 = 0.0045;
>
> For me, enum means create an enumerated type. Thus "enum
> double" to
> define a single value is just a contradiction.
>
> Enlightenment required…
The keyword "enum" stems from the enum hack in C++, where you use:
enum {foo = 100}; //Or similar
As a way to declare a manifest constant known at compile time.
D simply "hijacked" the "enum" keyword to mean "manifest constant
that is known at compile time".
Compared to an immutable instance:
* The immutable instance creates an actual reference-able object
in your binary. The enum will not exist outside of the
compilation (think of it as a higher order macro)
* immutable represents a value, which *may* be initialized at
runtime. In any case, more often than not (I have observed), the
compiler will refuse to use the immutable's value as compile-time
known, and it won't be useable as a template parameter, or static
if constraint.
More information about the Digitalmars-d-learn
mailing list