clojure
Macros de filetage
Recherche…
Introduction
Également appelées macros à flèche, les macros de threads convertissent les appels de fonctions imbriqués en un flux linéaire d'appels de fonctions.
Fil Dernier (- >>)
Cette macro donne la sortie d'une ligne donnée en tant que dernier argument de l'appel de fonction de ligne suivant. Par exemple
(prn (str (+ 2 3)))
est la même que
(->> 2
(+ 3)
(str)
(prn))
Fil Premier (->)
Cette macro donne la sortie d'une ligne donnée en tant que premier argument de l'appel de fonction de ligne suivant. Par exemple
(rename-keys (assoc {:a 1} :b 1) {:b :new-b}))
Je ne peux rien comprendre, non? Essayons encore, avec ->
(-> {:a 1}
(assoc :b 1) ;;(assoc map key val)
(rename-keys {:b :new-b})) ;;(rename-keys map key-newkey-map)
Thread as (as->)
C'est une alternative plus flexible au premier thread ou au dernier thread. Il peut être inséré n'importe où dans la liste des paramètres de la fonction.
(as-> [1 2] x
(map #(+ 1 %) x)
(if (> (count x) 2) "Large" "Small"))
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow