【发布时间】:2013-11-07 13:17:06
【问题描述】:
D 中枚举类型安全的状态和计划是什么?
我期待
import std.stdio: writeln;
void main(string args[]) {
enum E {x, y, z}
E e;
writeln(e);
e = cast(E)3;
writeln(e);
}
由于 D 的其他强大的静态类型/范围检查而无法编译,或者至少在运行时给出 RangeException。
令我惊讶的是,它改为打印
cast(E)3
这真的是大多数用例的首选默认行为吗?如果是这样,是否有人编写了一些包装器类型,最好在编译时提供更严格的范围检查?
【问题讨论】:
-
枚举通常也被用作标志,
cast是一个标志,有些事情可能无法正确传递并返回奇数值
标签: casting enums d enumeration type-safety