Über "Wenn.." im Schema (plt-scheme)
Hatte ich eine ziemlich simple Anforderung, die in mein Schema Programm zur Ausführung mehr
als eine Anweisung, in der wahr Bedingung für ein 'wenn'. . Also Schreibe ich meine
code so etwas wie dieses:
(if (= 1 1)
((expression1) (expression2)) ; these 2 expressions are to be
; executed when the condition is true
(expression3))
Offensichtlich, die oben nicht funktioniert, da habe ich unabsichtlich
erstellt ein # Verfahren # Argumente. So, um meine
Arbeit getan, ich legen Sie einfach die oben aufgeführten Ausdrücke in einer neuen Funktion und
rufen Sie es von dort, an die Stelle der expression1, expression2. Es
funktioniert.
So, mein Punkt hier ist: gibt es irgendeine andere bedingte Konstrukt, welches
kann meine Anforderung hier?
InformationsquelleAutor der Frage | 2009-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der MIT-Scheme, das ist nicht sehr unterscheiden, können Sie mit
begin
:Oder verwenden Cond:
InformationsquelleAutor der Antwort notnoop
(begin ...)
ist, wie Sie die Auswertung mehrerer Ausdrücke und wieder die Letzte. Viele andere Konstrukte als "implizite"begin
Blöcke (Sie können mehrere Ausdrücke genauso wie einebegin
blockieren, aber Sie brauchen nicht zu sagenbegin
), wie der Körper einescond
Klausel, die den Körper einesdefine
für die Funktionen, den Körper eineslambda
der Körper eineslet
etc.; möglicherweise war Sie es, ohne es zu merken. Aber fürif
dass es nicht möglich ist, die in der syntax nicht, weil es zwei Ausdrücke (die man für wahr bzw. für falsch) neben einander, und so, dass mehrere Ausdrücke, wäre es uneindeutig. So haben Sie, um eine explizitebegin
konstruieren.InformationsquelleAutor der Antwort newacct
können Sie ( ... ) zu bekommen, was Sie wollen in den true-Zweig der if-Anweisung. Sehen hier
InformationsquelleAutor der Antwort SpaceghostAli
Können Sie verwenden, COND, oder setzen Sie die Ausdrücke in etwas wie PROGN in Lisp (ich bin nicht sicher, wie es genannt wird, die in PLT-Scheme. edit: es heißt BEGINNEN).
COND sieht im Schema:
InformationsquelleAutor der Antwort Svante
Mit einem
if
Anweisung mit mehr als zwei Fällen beinhaltet verschachteln, z.B.:Mit
cond
scheint die bevorzugte Art und Weise für den Ausdruck von bedingten Anweisungen, wie es ist einfacher zu Lesen als eine Reihe von geschachteltenif
s und Sie können auch ausführen mehrere Anweisungen, ohne dass dasbegin
Klausel:InformationsquelleAutor der Antwort dtg