If

Faire un if en Clojure est simple. La syntaxe est

(if condition form-executée-si-vrai form-exécutée-si-faux)
.Et c'est à peu près tout. La syntaxe de Clojure étant très cohérente, un if n'a pas de syntaxe spéciale.

Vrai et faux

Une petite subtilité de Clojure est dans la réponse à la question "qu'est ce qui est interprété comme vrai ou faux dans une condition ?"

Ici aussi, ia règle est simple. Le booléen false vaut bien évidemment faux, nil est également considéré comme faux en clojure, et enfin tout le reste est considéré comme vrai.

Dans la condition d'un if, une fonction, une structure de données, un keyword, un entier... Tout sera vrai, à part le booléen false et nil.

Dernier détail sur if: la branche exécutée si la condition est fausse est optionnelle. En cas de condition fausse et sans de branches associée, if retournera nil.

or et and

or sert à vérifier si au moins un de ses paramètre est évalué comme vrai. Si oui, ce paramètre sera retourné. Si non, or retournera son dernier paramètre. La valeur retournée peut ensuite être utilisée dans la condition d'un if par exemple.

De la même manière, and retournera le premier de ses paramètres valant faux, ou bien retournera son dernier paramètre.

Précédent - Suivant -

;; simple number comparison
(println (if (= 1 1)
           "(= 1 1) is true \n"
           "(= 1 1) is not true \n"))
;; simple number comparison
(println (if (not (= 1 2))
           (str "1" "!=" "2" "\n")
           "Something is wrong with math \n"))

;; nil is false
(println (if nil
           "nil is true \n"
           "nil is false \n"))

;; false is false
(println (if false
           "false is true \n"
           "false is false \n"))

;; Everything else is true !
(println (if +
           "+ is true \n"
           "+ is false \n"))

;; Everything ! Note the false branch is optional.
(println (if [1 2 3]
           "[1 2 3] is true \n"))

;; Or returns its first true param, or the last param
(println ((or nil false +) 1000 1000) "\n")

;; and returns its first false param, or the last param
(println ((and "foo" "bar" +) 3000 3000) "\n")

powered by mcorbin - Available on Github