首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Phobos使用枚举作为常量?

为什么Phobos使用枚举作为常量?
EN

Stack Overflow用户
提问于 2010-09-02 06:54:53
回答 2查看 466关注 0票数 16

为什么Phobos使用enum来定义常量?例如,在std.math中:

代码语言:javascript
复制
enum real E = 2.7182818284590452354L;

为什么不使用全局immutable?与immutable相比,enum的优点/缺点是什么

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-02 08:18:04

  1. 枚举只是一个右值,不是左值。它没有地址。枚举枚举只能是编译时间常数,而不是运行时枚举。
  2. 枚举不会向目标文件添加任何膨胀。
  3. 枚举编译速度更快,在编译时使用的内存更少。通常情况下,它可以忽略不计,但如果您正在进行足够复杂的元编程,那么它就会开始变得很重要。

通常,对于编译时常量而不是运行时常量,使用枚举没有坏处,它的优点是使您的意图绝对清晰,并且效率略有提高。

编辑:枚举的另一个用例可以消除编译器的歧义,即函数应该在运行时还是编译时求值。如果将函数的结果赋给immutable堆栈变量,则会在运行时对该函数进行求值。如果在相同的作用域中使用enum,则将在编译时计算结果。

票数 22
EN

Stack Overflow用户

发布于 2010-09-02 08:47:35

D enum A = B;中的IIRC与C中的IIRC大同小异。在任何使用它的表达式中,IIRC总是作为文字嵌入其中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3622697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档