仅仅是我,还是“D编程语言”的第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,应该使用这样的大括号:
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?");
答案 0 :(得分:5)
这确实是一个错误。可以在此处找到TDPL的勘误表:http://www.erdani.com/tdpl/errata/index.php?title=Main_Page
答案 1 :(得分:2)
你是对的。示例代码错误。但是书中的文字是正确的:“如果你想把else绑定到第一个if,”缓冲区“第二个如果有一对括号”。但是代码并没有显示“缓冲”只是第二个if。