2010-09-14 46 views
5

仅仅是我还是“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。然后他说,要想让别人绑定到第一个如果,应该使用括号像这样:

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?"); 

回答

5

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

+0

我想我会找到它,如果我搜查勘误,而不是附录... :) – GManNickG 2010-09-14 21:16:46

+0

是的。那么,我知道它在哪里,因为我在D新闻组上很活跃。否则,我会更难找到它。 – 2010-09-14 21:19:32

2

你是对的。示例代码是错误的。但是这本书中的内容是正确的:“如果你想将其他的绑定到第一个,如果使用一对大括号”缓冲“第二个”。但是,如果代码不显示“缓冲”的话。