do et when

do

Nous avons vu précédemment la syntaxe de if. Mais comment faire si nous voulons exécuter plusieurs actions dans la partie exécutée si la condition est vraie ou fausse ?

Le mot clé do permet cela de façon générale. do prend une série de forms, et va les exécuter une à une de façon séquentielle, et retournera le résultat de la dernière.

when

On a vu précédemment qu'un if peut ne prendre qu'une form après la condition, et donc ne pas avoir de branche à exécuter si la condition est fausse. Pour montrer clairement qu'une form n'est exécutée que si une condition est vraie et retourner nil si la condition est fausse, il est préférable d'utiliser when, qui est similaire à if mais qui ne prend que 2 forms (la condition est la form à exécuter si la condition est vraie), et qui retournera nil si la condition est fausse.

De plus, vous pouvez enchainer comme dans un do les forms à l'intérieur d'un when.

Précédent - Suivant -

;; you can use do for i/o for example
(println
 (if (= 1 1)
   (do
     (println "hello from do!")
     (println "1 + 1 =" 2)
     "returned value"))
 "\n")

;; the 2 first expressions are useless
(println
 (do
   "this will do nothing"
   (+ 10 10) ;; do nothing
   (+ 30 30))  ;; returned value
 "\n")

;; condition is true
(println
 (when (= 1 1)
   (println "you can have multiple expressions in when !")
   "1 == 1 !")
 "\n")

;; condition is false, return nil
(println
 (when (= 1 2)
   "1 == 2 !?"))

Powered by mcorbin - Available on Github