【发布时间】:2012-08-01 00:16:50
【问题描述】:
所以我最近一直在尝试 D,因为我认识的许多程序员都建议我通过 C++ 学习它。
我正在使用 DMD Compiler v2.057,这是我的代码:
while(cliLoopC)
{
write("?> ");
string iPt_ = std.string.tolower(readln());
switch (iPt_)
{
default: writeln(E_URECCOM); break;
case "test":
writeln("Hello!");
break;
}
}
程序是,每当我输入test,所以它应该转到case而不是default,它只打印E_URECCOM的内容(这是一个包含@的常量char [] 987654325@)。
我不知道发生了什么让它这样做。有什么想法吗?
【问题讨论】:
-
Switch 语句总是输入第一个可能的匹配项,然后继续遍历其他 case 标签,直到找到中断或结束。这就是为什么默认应该结束。
-
@RedX 刚刚测试过,默认情况下并非如此(至少在 DMD 的情况下)。不过,常规 case 块确实如此(也经过测试)。默认值可以去任何地方,但它是惯例(在我看来,这是有充分理由的)将它放在底部。
-
这看起来很傻。不可能是这样的......无论如何,在顶部看到
default是相当误导的。
标签: switch-statement d evaluate