为什么Phobos使用enum
来定义常量?例如,在std.math:为什么Phobos使用枚举常量?
enum real E = 2.7182818284590452354L;
为什么不使用全球immutable
?与immutable
相比,enum
有什么优点/缺点?
为什么Phobos使用enum
来定义常量?例如,在std.math:为什么Phobos使用枚举常量?
enum real E = 2.7182818284590452354L;
为什么不使用全球immutable
?与immutable
相比,enum
有什么优点/缺点?
一般来说,对于编译时常量而不是运行时常量的东西来说,使用枚举并没有什么不利之处,它的优点是让你的意图完全清晰并且效率更高。
编辑:另一个用于枚举的用例可以解释为编译器是否应该在运行时或编译时计算函数。如果将函数的结果分配给immutable
堆栈变量,则该函数将在运行时进行评估。如果在同一范围内使用enum
,则结果将在编译时进行评估。
D中的IIRC enum A = B;
与C中的#define A B
差不多一样。它在任何使用它的表达式中总是作为一个字面值被嵌入。