enum
Phobosが定数の定義に使用するのはなぜですか? たとえば、std.math では次のようになります。
enum real E = 2.7182818284590452354L;
グローバルを使用しないのはなぜimmutable
ですか? enum
以上のメリット・デメリットはimmutable
?
一般に、実行時定数ではなくコンパイル時定数であるものの場合、列挙型を使用することに不利な点はなく、意図を完全に明確にし、わずかに効率を上げるという利点があります。
編集:列挙型のもう1つのユースケースは、関数を実行時に評価するかコンパイル時に評価するかをコンパイラーに明確にすることです。関数の結果がimmutable
スタック変数に割り当てられている場合、関数は実行時に評価されます。同じスコープでを使用する場合enum
、結果はコンパイル時に評価されます。
D の IIRCは、Cenum A = B;
の場合とほぼ同じ#define A B
です。それを使用する式では、常にリテラルとしてサブされます。