when
In Scheme ist if vielseitig, wird aber ohne explizites else schnell unübersichtlich — besonders wenn nur der wahre Zweig ausgeführt werden soll. Dann ist when klarer und kompakter.
Die Grundform von when:
(when test-is-true
do-this
do-that)- Bei
#twerden alle Ausdrücke im Body nacheinander ausgeführt. - Bei
#fpassiert nichts; es wird kein Wert zurückgegeben.
Beispiel
(when (< 0 1)
(lumi-message "Condition is true!")
(lumi-message "Executing additional actions."))if und when im Vergleich
Beide zusammen im selben Beispiel:
(if (= 0 1)
(lumi-message "This will not run")
(when (< 0 1)
(lumi-message "The 'when' condition is true!")
(lumi-message "Executing multiple actions within 'when'.")))Erklärung
if:(= 0 1)ist falsch, daher derelse-Zweig.whenimelse:(< 0 1)ist wahr; beidelumi-message-Aufrufe laufen.
Warum when?
- Kein leerer oder Dummy-
elsenötig. - Macht deutlich, dass nur der wahre Zweig zählt.
Zusammenfassung
if: wenn beide Zweige gebraucht werden.when: nur wahrer Zweig, ggf. mehrere Aktionen.- Kombination strukturiert komplexe Bedingungen klar.