2014-08-27 11 views
7

Wie komme ich von einer Funktion vor Erreichen des letzten Formulars in Standard-Racket zurück? Dies kann nützlich sein, um eine andere Ebene der Einrückung und Verschachtelung zu vermeiden.Rückkehr vorzeitig von Funktion in Racket

In Common Lisp gibt es return, eine spezialisierte Form der Rückkehr von. Gibt es ein Äquivalent in Racket, zumindest für die Rücksendung?

Antwort

8

Verwenden Sie let/ec, um eine Escape-Fortsetzung zu erstellen.

Beispiel:

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

lassen Sie mit/ec ist billiger als die Verwendung von Call/cc, die eine volle Fortsetzung schafft.