Wann
Obwohl if in Scheme elegant und vielseitig ist, kann es verwirrend werden, wenn es ohne explizites else verwendet wird. Dies gilt insbesondere dann, wenn die Absicht besteht, einen einzelnen Codezweig nur dann auszuführen, wenn eine Bedingung wahr ist, ohne alternative Aktion für den Fall false. In solchen Szenarien bietet das Konstrukt when eine klarere und prägnantere Alternative.
Die Grundform von when sieht so aus:
(when test-is-true
do-this
do-that)- Wenn
testals wahr ausgewertet wird (#t), werden alle Ausdrücke im Hauptteil deswhen-Konstrukts nacheinander ausgeführt. – Wenntestals falsch ausgewertet wird (#f), passiert nichts und es werden keine Werte zurückgegeben.
Beispiel
(when (< 0 1)
(lumi-message "Condition is true!")
(lumi-message "Executing additional actions."))Gegenüberstellung von if und when
Um den Unterschied zwischen if und when besser zu verstehen, betrachten Sie das folgende Beispiel, in dem beide zusammen verwendet werden:
(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:
Die
ifBedingung:- Der Test
(= 0 1)prüft, ob 0 gleich 1 ist. - Da dies falsch ist (
#f), wird derelseZweig desifausgeführt.
- Der Test
Das
whenKonstrukt imelseZweig:- Der
whenTest(< 0 1)prüft, ob 0 kleiner als 1 ist. – Da dies wahr ist (#t), werden alle Ausdrücke im Hauptteil deswhennacheinander ausgeführt:- First, it prints
"The 'when' condition is true!". - Then, it prints
"Executing multiple actions within 'when'.".
- First, it prints
- Der
Warum hier when verwenden?
– Die Verwendung von when anstelle eines anderen if vereinfacht die Logik, wenn für die Bedingung kein expliziter else Zweig erforderlich ist.
whenmacht deutlich, dass nur der wahre Zweig relevant ist, wodurch mögliche Verwirrung vermieden wird.
Zusammenfassung
- Verwenden Sie
if, wenn Sie sowohl einen wahren als auch einen falschen Zweig benötigen. - Verwenden Sie
when, wenn es nur einen einzigen Zweig für den wahren Fall gibt, insbesondere wenn mehrere Aktionen ausgeführt werden müssen. - Die Kombination von
ifundwhenkann dabei helfen, komplexere Bedingungen klar und prägnant zu strukturieren.