什么 - >>在Clojure中意味着什么?

Mah*_*dam 8 clojure

我正在学习Clojure,我遇到了这个例子:

  (defn people-in-scenes [scenes]
     (->> scenes
         (map :subject)
         (interpose ", ")
         (reduce str)))
Run Code Online (Sandbox Code Playgroud)

究竟->>做了什么?

Jos*_*osh 11

->>是"线程最后"的宏.它评估一个表单并将其作为最后一个参数传递给下一个表单.

您的代码相当于:

(reduce str (interpose ", " (map :subject scenes)))
Run Code Online (Sandbox Code Playgroud)

或者,以不同的方式看待它:

(reduce str
            (interpose ", "
                            (map :subject scenes)))
Run Code Online (Sandbox Code Playgroud)

在阅读clojure代码时,几乎必须从"由内而外"或从"自下而上"这样做.线程宏允许您以某些人所说的更符合逻辑的顺序读取代码."拿一些东西,首先要做到这一点,接下来做,下一个......".