2010-09-14 2 views
5

Это только я, или есть проблема со стр. 68 «Язык программирования D»? На этой странице автор обсуждает синтаксис 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(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

+0

Да. Ну, я знал, где это происходит, потому что я активен в группах новостей D. Мне было бы гораздо труднее найти это иначе. –

2

Вы верны. Код примера неверен. Но текст в книге правильный: «Если вы вместо этого хотите привязать else к первому, если« буфер »второй, если с парой фигурных скобок». Но код не показывает «буферизацию» только второй, если.

Смежные вопросы