2010-09-14 39 views
5

Chỉ là tôi, hoặc có vấn đề với trang 68 của "Ngôn ngữ lập trình D"? Trên trang này, tác giả thảo luận cú pháp của D về các câu lệnh if-else và cách chúng lồng nhau. Trước tiên, anh ấy trình bày ví dụ này:Vấn đề với Ví dụ về Sách

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

Sau đó, anh ấy chỉ ra rằng người khác sẽ liên kết với người thứ hai nếu. Sau đó, ông nói rằng, để có được những gì khác để ràng buộc để là người đầu tiên nếu, ta nên sử dụng niềng răng như vậy:

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

Am tôi thiếu điểm hoàn toàn, hoặc bạn sẽ phải làm điều này:

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

Trả lời

5

Nó thực sự là một lỗi. Bạn có thể tìm thấy errata cho TDPL tại đây: http://www.erdani.com/tdpl/errata/index.php?title=Main_Page

+0

Tôi cho rằng tôi đã tìm thấy nó nếu tôi tìm kiếm errata và không phải phụ lục ... :) – GManNickG

+0

Vâng. Vâng, tôi biết nó ở đâu vì tôi đang hoạt động trên các nhóm tin D. Tôi đã có một thời gian khó khăn hơn để tìm nó. –

2

Bạn là chính xác. Mã ví dụ là sai. Nhưng các văn bản trong cuốn sách là chính xác: "Nếu bạn thay vì muốn ràng buộc người khác đến đầu tiên nếu," đệm "thứ hai nếu với một cặp niềng răng". Nhưng mã không hiển thị "đệm" chỉ là thứ hai nếu.