Szukaj…


Wprowadzenie

Makra wątkowe, nazywane również makrami strzałek, przekształcają zagnieżdżone wywołania funkcji w liniowy przepływ wywołań funkcji.

Ostatni wątek (- >>)

To makro podaje wynik danego wiersza jako ostatni argument wywołania funkcji następnego wiersza. Na przykład

(prn (str (+ 2 3)))

jest taki sam jak

(->> 2
    (+ 3)
    (str)
    (prn))

Pierwszy wątek (->)

To makro podaje wynik danego wiersza jako pierwszy argument wywołania funkcji następnego wiersza. Na przykład

 (rename-keys (assoc {:a 1} :b 1) {:b :new-b}))

Nic nie rozumiesz, prawda? Spróbujmy ponownie za pomocą ->

(-> {:a 1}
    (assoc :b 1)                ;;(assoc map key val)
    (rename-keys {:b :new-b}))  ;;(rename-keys map key-newkey-map)

Wątek jako (as->)

Jest to bardziej elastyczna alternatywa dla pierwszego wątku lub ostatniego wątku. Można go wstawić w dowolnym miejscu na liście parametrów funkcji.

(as-> [1 2] x
      (map #(+ 1 %) x)
      (if (> (count x) 2) "Large" "Small"))


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow