for

for est utilisée pour faire de la compréhension de liste.

Il est semblable à doseq sauf qu'ici for construira une séquence à partir du résultat de chaque itération.

(for [value [0 1 2 3 4]]
  (* value 10))

Dans cet exemple, on appelle for avec un vector d'entiers. On multiplie ensuite value (qui représente l'élément en cours de traitement) par 10. Le résultat sera le vector initial avec chaque élément multiplié par 10.

De manière générale, préférez utiliser map à la place de for pour ce genre de traitements simples, ou filter à la place de :when.

Précédent - Suivant -

;; simple for
(println
 (for [value [0 1 2 3 4]]
   (* value 10))
 "\n")

;; multiple binding
(println
 (for [v1 [1 2 3 4]
       v2 [1 10 100]]
   (* v1 v2))
 "\n")

; using :let and :when helper
(println
 (for [v1 [1 2 3 4]
       v2 [1 10 100]
       :let [result (* v1 v2)]
       :when (> result 100)]
   result)
 "\n")

powered by mcorbin - Available on Github