Let et variables locales

Nous avons vu précédemment def pour définir des variables globales. Il est également possible de définir des variables localement (dans une fonction par exemple) en utilisant let.

Les variables se déclarent entre [], et sont des paires nom/valeur. Plus précisément, la syntaxe de let peut être décrite comme [name1 value1 name2 value2 ...].

(defn foo
  [a]
  (let [b (conj [10 20] 30)
        c (conj b a)]
    c))

Dans l'exemple précédent, on déclare deux variables: b et c, et on retourne c. On remarque que l'on utilise b dans la définition de c.

Il est possible d'utiliser le symbole _ à la place du nom. Dans ce cas, la form suivante sera exécutée mais son résultat ne sera assigné à aucune variable. Dans l'exemple de la fonction bar, on voit que println est appelé.

Précédent - Suivant -

(defn foo
  [a]
  (let [b (conj [10 20] 30)
        c (conj b a)]
    ;; returns c
    c))

(println (foo 40) "\n")

(defn bar
  [a]
  (let [b (* 10 100)
        _ (println "b = " b)
        c (+ a b)]
    c))

(println (bar 2))

Powered by mcorbin - Available on Github