2014-08-27 18 views
7

Làm thế nào để tôi trở về từ một hàm trước khi đạt đến hình thức cuối cùng trong Racket tiêu chuẩn? Điều đó có thể hữu ích để tránh một mức độ thụt đầu dòng và hình thức làm tổ.Trả lại sớm từ chức năng trong Racket

Trong Lisp thông thường có return, một hình thức trả lại chuyên biệt. Bất kỳ tương đương trong vợt, ít nhất là cho trở lại chỉ?

Trả lời

8

Sử dụng let/ec để tạo tiếp tục thoát.

Ví dụ:

(let/ec return 
    (for ([x 10000]) 
    (when (= x 100) 
     (return x)))) 

Sử dụng phép/ec là rẻ hơn so với sử dụng cuộc gọi/cc mà tạo ra một sự tiếp nối đầy đủ.

Các vấn đề liên quan