【问题标题】:Problem with Book Example书籍示例的问题
【发布时间】:2010-09-14 20:26:11
【问题描述】:

只是我,还是“The D Programming Language”的第 68 页有问题? 在此页面上,作者讨论了 D 的 if-else 语句的语法以及它们如何嵌套。他首先介绍了这个例子:

if(a == b)
    if(b == c)
        writeln("all are equal!");
    else
        writeln("a is different from b. Or is that so?");

然后他指出 else 将绑定到第二个 if。然后他说,要让 else 绑定到第一个 if,应该像这样使用大括号:

if(a == b) {
    if(b == c)
        writeln("all are equal!");
    else
        writeln("a is different from b. Or is that so?");
}

我是否完全错过了重点,还是您必须这样做:

if(a == b) {
    if(b == c)
        writeln("all are equal!");
}
else
    writeln("a is different from b. Or is that so?");

【问题讨论】:

    标签: d


    【解决方案1】:

    确实是个错误。可以在此处找到 TDPL 的勘误表:http://www.erdani.com/tdpl/errata/index.php?title=Main_Page

    【讨论】:

    • 如果我搜索勘误表而不是附录,我想我会找到它...:)
    • 是的。嗯,我知道它在哪里,因为我在 D 新闻组上很活跃。否则我会很难找到它。
    【解决方案2】:

    你是对的。示例代码是错误的。但是书中的文字是正确的:“如果您想将else绑定到第一个if,请用一对大括号“缓冲”第二个if”。但是代码并没有在第二个 if 中显示“缓冲”。

    【讨论】: