2016-12-20 4 views
4

Ich lerne, Clojure, und ich kam in diesem Beispiel:Was bedeutet - >> in Clojure?

(defn people-in-scenes [scenes] 
    (->> scenes 
     (map :subject) 
     (interpose ", ") 
     (reduce str))) 

Was ->> genau macht?

+6

'(doc - >>)' ist dein Freund. –

Antwort

9

->> ist das Makro "Thread-Last". Es wertet ein Formular aus und übergibt es als das nächste Argument in das nächste Formular.

Ihr Code ist das Äquivalent von:

(reduce str (interpose ", " (map :subject scenes))) 

Oder es einen anderen Weg, um zu sehen:

(reduce str 
      (interpose ", " 
          (map :subject scenes))) 

Wenn clojure Code lesen, ein fast so aus dem „von innen nach außen zu tun hat "oder von unten nach oben" Die Threading-Makros ermöglichen das Lesen von Code in einer etwas logischeren Reihenfolge. "Nimm etwas, tu das zuerst, mach es als nächstes ...".

2

Ich habe festgestellt, hilfreich zu lesen Clojure cheatsheet (und ClojureScript cheatsheet). Diese haben Listen aller gängigen Funktionen in der Sprache. Natürlich gibt es viele weitere Funktionen in zusätzlichen Bibliotheken.

Siehe auch ->, die Funktion als zweites Argument in die nächste Form übergibt.

1

Ich empfehle Ihnen auch, this tollen Blog über seltsame 'Symbole' Zeichen von Clojure.