为什么使用 Phobosenum
来定义常量?例如,在 std.math 中:
enum real E = 2.7182818284590452354L;
为什么不使用全局immutable
?enum
over的优点/缺点是immutable
什么?
一般来说,对于编译时常量而不是运行时常量,使用枚举没有缺点,它的优点是使您的意图绝对清晰并且稍微更高效。
编辑:枚举的另一个用例可以消除编译器是否应该在运行时或编译时评估函数的歧义。如果将函数的结果分配给immutable
堆栈变量,则将在运行时评估该函数。如果您enum
在同一范围内使用 an,则将在编译时评估结果。
D 中的 IIRCenum A = B;
或多或少与#define A B
C 中的相同。在任何使用它的表达式中,它总是被替换为文字。