2010-09-14 32 views
5

¿Soy yo solo o hay un problema con la página 68 de "The D Programming Language"? En esta página, el autor analiza la sintaxis de D's de las declaraciones if-else y cómo anidan. Primero presenta este ejemplo:Problema con el ejemplo de libro

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

Luego, señala que el otro se enlazará con el segundo si. Luego dice que, para conseguir el más que se unen a la primera si, hay que utilizar llaves de este modo:

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

Am I no viene al caso por completo, o tendría que tener que hacer esto:

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

Respuesta

5

De hecho, es un error. La errata para TDPL se puede encontrar aquí: http://www.erdani.com/tdpl/errata/index.php?title=Main_Page

+0

Supongo que lo habría encontrado si hubiera buscado erratas y no una adición ... :) – GManNickG

+0

Sí. Bueno, sabía dónde estaba porque estoy activo en los grupos de noticias D. Hubiera sido mucho más difícil encontrarlo de otra manera. –

2

Usted está en lo correcto. El código de ejemplo es incorrecto. Pero el texto en el libro es correcto: "Si en lugar de eso desea atar el else al primero si," buffer "el segundo si está con un par de llaves". Pero el código no muestra "búfer" solo el segundo si.

Cuestiones relacionadas