quand
Dans Scheme, bien que if soit élégant et polyvalent, il peut devenir déroutant lorsqu’il est utilisé sans else explicite. Cela est particulièrement vrai lorsque l’intention est d’exécuter une seule branche de code uniquement lorsqu’une condition est vraie, sans action alternative pour le cas false. Dans de tels scénarios, la construction when fournit une alternative plus claire et plus concise.
La forme de base de when ressemble à ceci :
(when test-is-true
do-this
do-that)- Si
testest évalué à vrai (#t), toutes les expressions du corps de la constructionwhensont exécutées séquentiellement. - Si
testest évalué à false (#f), rien ne se passe et aucune valeur n’est renvoyée.
Exemple
(when (< 0 1)
(lumi-message "Condition is true!")
(lumi-message "Executing additional actions."))Contrastant if et when
Pour mieux comprendre la différence entre if et when, considérez l’exemple suivant dans lequel les deux sont utilisés ensemble :
(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'.")))Explication :
La condition
if:- Le test
(= 0 1)vérifie si 0 est égal à 1. - Puisque c’est faux (
#f), la brancheelseduifest exécutée.
- Le test
La construction
whendans la brancheelse:- Le
whentest(< 0 1)vérifie si 0 est inférieur à 1. - Puisque cela est vrai (
#t), toutes les expressions dans le corps duwhensont exécutées séquentiellement :- First, it prints
"The 'when' condition is true!". - Then, it prints
"Executing multiple actions within 'when'.".
- First, it prints
- Le
Pourquoi utiliser when ici ?
- Utiliser
whenau lieu d’un autreifsimplifie la logique lorsqu’il n’y a pas besoin d’une brancheelseexplicite pour la condition. whenindique clairement que seule la vraie branche est pertinente, réduisant ainsi la confusion potentielle.
Résumé
- Utilisez
iflorsque vous avez besoin d’une branche vraie et fausse. - Utilisez
whenlorsqu’il n’y a qu’une seule branche pour le vrai cas, notamment lorsque plusieurs actions doivent être exécutées. - La combinaison de
ifetwhenpeut aider à structurer des conditions plus complexes de manière claire et concise.