D2:switch语句和变量
在《The D 编程语言》一书中我看到以下内容:
通常
case
表达式是 编译时常量,但 D 允许 还有变量和保证 词汇顺序评估高达 第一场比赛。
代码:
void main()
{
string foo = "foo";
string bar = "bar";
string mrX;
switch (mrX)
{
case foo:
writeln(foo);
break;
case bar:
writeln(bar);
break;
default:
writeln("who knows");
}
}
结果:
错误:大小写必须是字符串或 积分常数,不是 foo
有什么问题吗?
附言。我使用DMD32 D编译器v2.053
In "The D Programming Language" book I see the following:
Usually the
case
expressions are
compile-time constants, but D allows
variables, too, and guarantees
lexical-order evaluation up to the
first match.
Code:
void main()
{
string foo = "foo";
string bar = "bar";
string mrX;
switch (mrX)
{
case foo:
writeln(foo);
break;
case bar:
writeln(bar);
break;
default:
writeln("who knows");
}
}
Result:
Error: case must be a string or an
integral constant, not foo
What's wrong?
PS. I use DMD32 D Compiler v2.053
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这似乎是一个错误。它可以很好地处理
int
类型的变量。我已经为您报告了该错误:http://d.puremagic.com/问题/show_bug.cgi?id=6176It appears to be a bug. It works just fine with variables of type
int
. I've reported the bug for you: http://d.puremagic.com/issues/show_bug.cgi?id=6176也许这是一个错误,但它不能使用变量。我可以让你的例子像这样工作:
Maybe it's a bug but it can't use variables. I could get your example to work like this: