Définir une variable

Une variable globale se définit avec le mot clé def.

(def foo 1)

Le code précédent assigne à foo la valeur 1. Cette variable peut ensuit être utilisée.

Toutes les variables Clojure (list, set, vector, map...) sont immuables. Cela est une des grande force de Clojure.

Lorsque vous modifiez une variable (par exemple un vector avec la fonction conj), vous pouvez considérer que vous obtenez une nouvelle version de cette variable. L'ancienne version de la variable sur lequel vous avez appelé la fonction n'a pas changée.

(def bar [1 2 3])
(conj bar 4)
(println bar)

Dans cet exemple, on définit une variable bar contenant la valeur [1 2 3]. On ajoute ensuite un élément à cette variable via conj. Le résultat retourné par cette fonction sera [1 2 3 4].

Si vous utilisez maintenant println pour afficher la valeur de la variable bar, vous verrez que sa valeur n'a pas changée et est toujours [1 2 3].

En Clojure, vous n'aurez donc (presque) jamais à vous inquiéter des effets de bord, ou de savoir quelle partie de votre programme possède une référence à une variable, car ces dernieres sont toujours immuables.

Précédent - Suivant -

(def foo 1)
(println foo "\n")

(def bar [1 2 3])
(println bar "\n")

;; variables in clojure are immutable
(println (conj bar 4))
;; bar has not changed
(println bar "\n")

powered by mcorbin - Available on Github