爲什麼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
差不多一樣。它在任何使用它的表達式中總是作爲一個字面值被嵌入。