wanneer
Hoewel if in Scheme elegant en veelzijdig is, kan het verwarrend worden als het wordt gebruikt zonder een expliciete else. Dit geldt met name als het de bedoeling is om één enkele codevertakking alleen uit te voeren als een voorwaarde waar is, zonder alternatieve actie voor het geval false. In dergelijke scenario’s biedt de when constructie een duidelijker en beknopter alternatief.
De basisvorm van when ziet er als volgt uit:
(when test-is-true
do-this
do-that)- Als de
testevalueert naar true (#t), worden alle expressies in de hoofdtekst van dewhenconstructie opeenvolgend uitgevoerd. - Als
testresulteert in false (#f), gebeurt er niets en worden er geen waarden geretourneerd.
Voorbeeld
(when (< 0 1)
(lumi-message "Condition is true!")
(lumi-message "Executing additional actions."))Contrasterende if en when
Om het verschil tussen if en when beter te begrijpen, kunt u het volgende voorbeeld bekijken waarin beide samen worden gebruikt:
(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'.")))Uitleg:
De
ifvoorwaarde:- De test
(= 0 1)controleert of 0 gelijk is aan 1. - Omdat dit niet waar is (
#f), wordt deelsebranch vanifuitgevoerd.
- De test
Het
when-construct in deelse-filiaal:- De
whentest(< 0 1)controleert of 0 kleiner is dan 1. - Aangezien dit waar is (
#t), worden alle expressies in de hoofdtekst vanwhenopeenvolgend uitgevoerd:- First, it prints
"The 'when' condition is true!". - Then, it prints
"Executing multiple actions within 'when'.".
- First, it prints
- De
Waarom hier when gebruiken?
- Het gebruik van
whenin plaats van een andereifvereenvoudigt de logica wanneer er geen behoefte is aan een explicieteelsevertakking voor de voorwaarde. whenmaakt duidelijk dat alleen de echte branch relevant is, waardoor potentiële verwarring wordt verminderd.
Samenvatting
- Gebruik
ifals je zowel een true als false branch nodig hebt. - Gebruik
whenals er slechts één vertakking is voor het ware geval, vooral als er meerdere acties moeten worden uitgevoerd. - Het combineren van
ifenwhenkan helpen complexere voorwaardelijke bepalingen duidelijk en beknopt te structureren.