2012-06-02 9 views

Trả lời

43

Các biến thể một lượng vũ trang của if đã bị xóa khỏi vợt để ngăn chặn lỗi.

Trong mã chức năng, người ta luôn sử dụng biến thể hai trang của if.

(if test expr-on-true expr-on-false) 

Quên cánh tay thứ hai expr-on-false sẽ không dẫn đến một cú pháp lỗi, nhưng để một lỗi runtime (biểu thức sẽ trở #<void>).

Để ngăn các lỗi này thường xảy ra trong mã chức năng, nó đã được quyết định giới thiệu biểu mẫu when cho biến thể một tay của if.

(when test expr-on-true) 

Bên cạnh việc ngăn chặn các lỗi ngẫu nhiên, biểu mẫu mới được chỉ định rõ ràng cho người đọc mã, mã dựa vào tác dụng phụ.

Porting mã từ Đề án tiêu chuẩn để vợt

Nếu bạn cố gắng chạy mã Scheme trong vợt và thấy thông báo lỗi

if: bad syntax (must have an "else" expression) 

bạn phải viết lại biểu thức if để when hoặc unless.

Đơn giản chỉ cần viết lại:

(if test expr1) to (when test expr1) 

(if (not test) expr1) to (unless test expr1).