if
In seiner einfachsten Form wertet if in Scheme einen Test aus und führt je nach Ergebnis einen von zwei Codeblöcken aus:
(if test-is-true
do-this)- Bei
#twird der consequent ausgeführt (Wert zurückgeben oder Nebeneffekte).
Beispiel
(if (< 0 1)
(lumi-message "True!"))- Test:
(< 0 1)ist wahr. (lumi-message "True!")wird ausgeführt.
Else-Zweig: if-else
(if test
do-this
else-do-this)(if test
consequent
alternative)So funktioniert es
- Test zuerst auswerten.
- Bei
#tconsequent, bei#falternative.
Beide Blöcke können jeden gültigen Scheme-Ausdruck enthalten.
Beispiele
Beispiel 1: Wert zurückgeben
(if (< 0 1)
1
0)Ergebnis: 1
Beispiel 2: begin-Block
(if (= 0 1)
(begin
(lumi-message "This won't run")
1)
(begin
(lumi-message "False condition met, calculating...")
(* 3 4)))Ergebnis: Gibt “False condition met, calculating…” aus und liefert 12.
Beispiel 3: let-Ausdruck
(if (= 1 1)
(let (x -1)
(lumi-message "True condition met, calculating...")
(* x 10))
(let (y 4)
(lumi-message "This won't run")
(* 3 y)))Ergebnis: Gibt “True condition met, calculating…” aus und liefert -10.
Zusammenfassung
ifwertet Tests aus und führt passende Blöcke aus.- Einfache Ausdrücke oder
begin/let-Gruppen möglich. - Ohne explizites
elsenur consequent bei wahrem Test.