Ricerca…


introduzione

Conosciuto anche come macro di freccia, le macro di thread convertono le chiamate di funzioni annidate in un flusso lineare di chiamate di funzione.

Thread Ultimo (- >>)

Questa macro fornisce l'output di una linea specifica come ultimo argomento della chiamata della funzione di linea successiva. Per es

(prn (str (+ 2 3)))

è uguale a

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

Prima discussione (->)

Questa macro fornisce l'output di una determinata riga come primo argomento della chiamata della funzione di linea successiva. Per es

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

Non riesco a capire niente, giusto? Proviamo di nuovo, con ->

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

Thread as (as->)

Questa è un'alternativa più flessibile al thread first o thread last. Può essere inserito ovunque nella lista dei parametri della funzione.

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow